田 田伯光 Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-02 #1 在Delphi中可以在类成员函数中申明Abstract or Virtual Method那么其类就变成了虚基类.但是我现在要建立没有Abstract Method(s)的虚基类该如何申明?多谢指教.
田 田伯光 Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-02 #2 在Delphi中可以在类成员函数中申明Abstract or Virtual Method那么其类就变成了虚基类.但是我现在要建立没有Abstract Method(s)的虚基类该如何申明?多谢指教.
爱 爱不到要偷 Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-02 #3 http://www.delphibbs.com/keylife/iblog_show.asp?xid=13813
田 田伯光 Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-02 #4 哥哥,没有啊....只有申明抽象方法的.可是我没有抽象方法.....
C cis Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-02 #5 不知道这样能否满足你: type TTest = class(TPersistent) protected procedure create virtual abstract;//必须通过继承才能使用 public procedure test2;//这里是你的方法 end;
不知道这样能否满足你: type TTest = class(TPersistent) protected procedure create virtual abstract;//必须通过继承才能使用 public procedure test2;//这里是你的方法 end;
田 田伯光 Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-02 #6 你的意思是把Constructor 申明成Abstract的然后自然这个Class就变成了一个Abstract的了,不过这样带来一个问题就是其派生类就一定必须重载这个函数,就算什么都没有也必须写个空的函数重载,否则就不能申明这个对象的实例。
你的意思是把Constructor 申明成Abstract的然后自然这个Class就变成了一个Abstract的了,不过这样带来一个问题就是其派生类就一定必须重载这个函数,就算什么都没有也必须写个空的函数重载,否则就不能申明这个对象的实例。
C coscka Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-02 #7 to 田伯光: 我的理解是这样:在类的声明里面,只要有一个成员函数是纯虚函数: procedure DoSomething virtrul abstract 那么这个类就是一个抽象类,而不一定非得是构造函数,抽象类不能生成实例,只能通过继承,由派生类生成实例。 如:Type TMyClass procedure DoSomething virtrul abstract end; var MyClass1:TMyClass //错误 Type TMyClassSon procedure DoSomething override end; var MyClass1:TMyClassSon //正确 (不对之处望指正)
to 田伯光: 我的理解是这样:在类的声明里面,只要有一个成员函数是纯虚函数: procedure DoSomething virtrul abstract 那么这个类就是一个抽象类,而不一定非得是构造函数,抽象类不能生成实例,只能通过继承,由派生类生成实例。 如:Type TMyClass procedure DoSomething virtrul abstract end; var MyClass1:TMyClass //错误 Type TMyClassSon procedure DoSomething override end; var MyClass1:TMyClassSon //正确 (不对之处望指正)
田 田伯光 Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-03 #8 这是啊,可是我的虚基类并没有虚函数,本写一个虚函数没什么大不了,但就引起了我的派生类就必须去重载这些虚函数了....
D daqun Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-03 #9 你想让子类自由的继承,但是又不想约束子类都继承某个特定的方法. 那你这个"虚"类就没有必要必须是"虚"的. 因为,在delphi中任何一个类都可以继承.
寻 寻路 Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-03 #10 我不知道你的类什么都不干做什么! 这样并没有什么意义啊! 如果你只是想定义类名,那你就TMyClass = (ParentClass);就可以了啊,或者从TPersistent类往下面派生.
田 田伯光 Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-05 #11 虚基类在软件工程中都很有用,比如可以用这个类作为各种其派生类的多态性调用点.但是它又不能构造它的真正实体. 另外我这个类里面肯定有它的相关事件,不过这些事件是不能申明成Abstract的,他们有可能会被重载或者继承到他的子类中.其实我要知道的也就是类似Java中的 public abstract class{...}在delphi中的申明方式.不过就和Java一样里面的函数可以是虚函数也可以没有虚函数.
虚基类在软件工程中都很有用,比如可以用这个类作为各种其派生类的多态性调用点.但是它又不能构造它的真正实体. 另外我这个类里面肯定有它的相关事件,不过这些事件是不能申明成Abstract的,他们有可能会被重载或者继承到他的子类中.其实我要知道的也就是类似Java中的 public abstract class{...}在delphi中的申明方式.不过就和Java一样里面的函数可以是虚函数也可以没有虚函数.
B BrightHeart Unregistered / Unconfirmed GUEST, unregistred user! 2005-07-30 #12 抽象类都不允许有实例的,抽象方法限定了子类必须实现其方法,但是这个并不影响你的 使用啊。你建立一个子类继承它,然后实现其方法,把具体实现有用方法的类再次继承为子类就可以了,这样不必每个最终子类都实现初始基类的抽象方法
抽象类都不允许有实例的,抽象方法限定了子类必须实现其方法,但是这个并不影响你的 使用啊。你建立一个子类继承它,然后实现其方法,把具体实现有用方法的类再次继承为子类就可以了,这样不必每个最终子类都实现初始基类的抽象方法