type
Tman=class
......
......
end;Tchinese=class(Tman)
......
......
end;我需要创建Tchinese的一个实例 Aman:=Tchinese.create
那么定义变量时,写 Aman:Tman  和 Aman:Tchinese 有区别吗?什么情况下写什么?

解决方案 »

  1.   

    那我就往下说,英国人和中国人都要吃饭,但是吃的方式不一样,老外用叉子,我们用筷子:
      TMan = class
      public
        procedure Eat; virtual; abstract;
      end;
      TChinese = class(TMan)
      public
        procedure Eat; override; // 用筷子
      end;
      TEnglish = class(TMan)
      public
        procedure Eat; override; // 用叉子
      end;
      // 其他国家的人吃饭......;
      
      // 把吃的细节隐藏起来,系统总的业务逻辑:"人吃饭"不会变,而吃的细节由子类处理,如果该酒店有一天不接待某个国家的客人,系统总的业务逻辑也不会变,这叫依赖倒置原则。