如何让一个类不从TObject派生?(50分)

  • 主题发起人 主题发起人 defisky
  • 开始时间 开始时间
想干什么?
 
别做梦了 delphi的类都必须从tobject 继承
 
好好研究一下VCL的继承关系吧。
TOject是所有类的抽象基类。(TMyClass=class 也就是TMyClass=class(TObject))
 
你想干什么?
 
不可能的
 
TObject在Delphi中是所有类的父类,
在关系树中是所有类的根,
没有了根,
当然就没有了其它的类啦
 
通常书上会说TObject是所有类的父类,
就是因为有了这东东,才使得类有了有了它固有的特性,比如继承。
如过连赋予类特性的东东都不要,那怎么还能叫类?
一个看似无意义,其实挺有意义的问题。
 
怎么不可能的,自己定义一个类不就可以了吗?
 
To 毛虎林:
你定义自己的类逃不过这样:
TMyClass=class
兄弟,难道你不知道它其实就是TMyClass=class(TObject)吗?
Delphi只是缺省不写罢了。
还是那句话:TObject之所以称之为根,是因为有了TObject才使类有了可继承
的特性,才源源不断的可以派生出其它的类.
你连母鸡都不要了,还怎么下蛋?
 
可以!
type
TMyFirstObject=object
end;

TMyfirstObject就是一个没有继承TObject的类。你可以定义自己的构造函数和
析构函数。
 
To Hexi:
说的没错,你声明的类型确实没有继承于TObject,
但是你用TmyFirstObject=object(AncestorObjectType)声明的类型
称为'对象类型'(Object Type),而并非'类类型'(Class Type)
对象类型并不继承于Tobject,它没有内置的构造函数 、析构函数、或者其它
方法,可以用New过程和Dispose过程来建立和释放它的实例,它的存在是为了
与旧有的程序兼容,Delphi并不推荐使用.
问题所指的应是一般意义上的类类型,即 Class Type.
 
接受答案了.
 
delphi真是麻烦,C++就没有这个问题了
 
后退
顶部