如何在Delphi中申明虚基类? ( 积分: 100 )

  • 主题发起人 主题发起人 田伯光
  • 开始时间 开始时间

田伯光

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi中可以在类成员函数中申明Abstract or Virtual Method那么其类就变成了虚基类.但是我现在要建立没有Abstract Method(s)的虚基类该如何申明?多谢指教.
 
在Delphi中可以在类成员函数中申明Abstract or Virtual Method那么其类就变成了虚基类.但是我现在要建立没有Abstract Method(s)的虚基类该如何申明?多谢指教.
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=13813
 
哥哥,没有啊....只有申明抽象方法的.可是我没有抽象方法.....
 
不知道这样能否满足你:
type
TTest = class(TPersistent)
protected
procedure create
virtual
abstract;//必须通过继承才能使用
public
procedure test2;//这里是你的方法
end;
 
你的意思是把Constructor 申明成Abstract的然后自然这个Class就变成了一个Abstract的了,不过这样带来一个问题就是其派生类就一定必须重载这个函数,就算什么都没有也必须写个空的函数重载,否则就不能申明这个对象的实例。
 
to 田伯光:
我的理解是这样:在类的声明里面,只要有一个成员函数是纯虚函数:
procedure DoSomething
virtrul
abstract
那么这个类就是一个抽象类,而不一定非得是构造函数,抽象类不能生成实例,只能通过继承,由派生类生成实例。
如:Type TMyClass
procedure DoSomething
virtrul
abstract
end;
var MyClass1:TMyClass
//错误
Type TMyClassSon
procedure DoSomething
override
end;
var MyClass1:TMyClassSon
//正确
(不对之处望指正)
 
这是啊,可是我的虚基类并没有虚函数,本写一个虚函数没什么大不了,但就引起了我的派生类就必须去重载这些虚函数了....
 
你想让子类自由的继承,但是又不想约束子类都继承某个特定的方法.
那你这个"虚"类就没有必要必须是"虚"的.
因为,在delphi中任何一个类都可以继承.
 
我不知道你的类什么都不干做什么!
这样并没有什么意义啊!
如果你只是想定义类名,那你就TMyClass = (ParentClass);就可以了啊,或者从TPersistent类往下面派生.
 
虚基类在软件工程中都很有用,比如可以用这个类作为各种其派生类的多态性调用点.但是它又不能构造它的真正实体.

另外我这个类里面肯定有它的相关事件,不过这些事件是不能申明成Abstract的,他们有可能会被重载或者继承到他的子类中.其实我要知道的也就是类似Java中的
public abstract class{...}在delphi中的申明方式.不过就和Java一样里面的函数可以是虚函数也可以没有虚函数.
 
抽象类都不允许有实例的,抽象方法限定了子类必须实现其方法,但是这个并不影响你的
使用啊。你建立一个子类继承它,然后实现其方法,把具体实现有用方法的类再次继承为子类就可以了,这样不必每个最终子类都实现初始基类的抽象方法
 
后退
顶部