1:虚类、虚方法、虚方法表、接口
   它们各自怎么实现,是什么一个概念?
2:虚方法、抽象方法的区别和各自的作用?
3:Public、Private、Published的可见性
请各位高手赐教,最好能用自己的理解的语言
谢谢

解决方案 »

  1.   

    纯虚类:
    virtual ~Graph()=0;表明声明了一个纯虚类。
    纯虚类是不能实例化的,C++中没有纯虚类的析构函数,
    另外:纯虚类不能生成对象。  
    抽象类:
    作用是为了以后的继承 体现多态
      

  2.   

    去找本面向对象编程的书看看吧!这些问题一时说不清的!
    学面向对象编程,最好是看C++的书。smalltalk大家用的少就免了吧!
    TMyClass= class
      procedure StaticFunc;//静态方法
      procedure VirtualFunc;virtual;//虚拟方法
      procedure DynamicFunc;Dynamic;//动态方法
      procedure AbstractFunc;virtual;abstract;
    1、虚类:如果该类拥有一个或一个以上虚方法,则该类即为虚类,如上面的类。
    2、虚方法:声明的关键字为Virtual.因为虚方法可以被子类覆盖,所以
    编译器在编译时并不能知道该虚拟方法的地址,因此编译器通过建立一个虚拟方法
    表来查找运行时的函数(过程)地址。虚拟方法的调用方式和静态方法的调用方式相同。
    3、虚方法表:一张记录虚拟方法和其调用地址等信息的表。一个对象的虚拟方法表既包括自己的虚拟方法也包括从祖先继承下来的虚拟方法表。因此比较耗内存。
       虚拟方法表是编译器自动产生的,不需要人干预。
    虚拟方法是实现多态的一种方法。父类中的虚拟方法可以被子类覆盖。
    4、抽象方法必须是虚拟方法或动态方法,抽象方法不能有实现代码。抽象方法的实现代码是在其子类中实现。因此具有抽象方法的类不能被实例化。下面的代码是错误的:MyClass := TMyClass.create;
    5、public 公有成员,表示其它的类可以访问其所属成员,其子类也继承其成员。
       private 私有成员,其它类不能访问,也不能被继承.
       protected 保护成员,其它类不能访问,但可被继承。
       Published Delphi的类关键字,访问方式和Public相同,但Published成员可以出现在Object inspector;
      

  3.   

    接口定义能够与一个对象进行交互操作的一组过程和函数。接口定义的函数或过程不需要在接口中实现。只要实现了接口方法的对象,接口都可以访问。delphi的接口与C++的纯虚类相似。
    type IMyinterface = interface
         ['{全局码}'] //按ctrl+shift+G自动产生.
         function F1 :integer; //接口方法
         end;
         TMyClass = class(tinterfacedobject,IMyinterface)
          function f1:integer;
         end;
    //实现f1函数
    function TMyClass.F1 :integer;
    begin
       Result := 0;
    end;则我们可以写如下代码:
    var
      myinterface:IMyInterface;
    begin
      MyInterface := TMyClass.Create;
    end;注意:delphi的类和C++中的类概念还是有区别的。delphi简化了许多东东。
      

  4.   

    补充楼上的
    接口:你可以先把它看成纯虚的抽象类(virtual;abstract;)
      

  5.   

    Delphi的接口和C++的纯虚类相似,但由于Delphi不支持多继承。所以在实现过程中还是有区别的。
      

  6.   

    to:worldliness
      你所问的问题都是面向对象编程必备的一些概念,当然面向对象编程远远不止这些。我建议你先找一本C++编程书中关于类的部分看看,然后再看看Delphi关于类的使用部分。知道怎么使用类,面向对象编程也就差不多了。学习面向对象编程还是C++比较好。Delphi的Object Pascal语言把类的概念简化了很多.
      

  7.   

    to hawksoft(明月清风) :
    谢谢
    我想听听大家的
    因为大家说的可能更加的贴近我们的实际
    书上说的好模糊
      

  8.   

    正因为delphi没有多重继承,delphi 中的接口显的更加灵活和重要。这和vcl的实现方式有关系,这和c#中的很多新东西相似,一般的用户用起来不会出什么错误。如果没有多重继承的编程经历,建议暂时不要去看它喽。