delphi – 从TObject派生时是否需要调用base方法?
我有一个从TObject下降的类,如果我不调用父方法,是不是坏?我问,因为看TObject.Create / Destroy,他们什么都不做.
这就是为什么我们自己覆盖/暴露它们的原因. 没有代码示例,我只想确保. 解决方法
最常见的行为是调用继承.所以如果我明确地不想继承的行为,我不会调用继承.否则,我做.如果继承的行为是一个无操作的TObject.Create / Destroy,我仍然调用继承.
还要注意,构造函数和析构函数的构造可能与其他方法有所不同.这是罕见的,您需要跳过对继承方法的调用.我不能想像一个例子.建设者总是在创造和摧毁其他物体,那么你怎么可以考虑跳过呢? 我知道一些作者在直接从TObject派生时编写了省略继承的代码,因为他们知道TObject中的实现什么都不做.我不喜欢,对我来说这是一个错误. TObject的实现细节不应该泄漏到派生类中. 我很确定TObject.Create / Destroy将永远是no-ops.如果Embarcadero改变了,那么这么多的代码会破裂.但是你的一个课程呢?假设你有一个派生自TObject的类.然后你有另一个类派生: TMyClass1 = class .... end; TMyClass2 = class(TMyClass) .... end; 您没有TMyClass1的构造函数和TMyClass2的构造函数,如下所示: constructor TMyClass2.Create; begin // no need to call inherited,it's a no-op FMyObj := TBlahBlah.Create; end; 那么有一天你修改TMyClass1构造函数来做某事.现在TClass2坏了所以,我永远不会省略一个继承的调用,因为该调用没有任何作用. 正常实例方法的情况有所不同.您更希望忽略基类实现并提供全新的实现是更可信的.但是根据派生类要做的事情做出决定,而不是超类是否有一个空的方法实现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |