加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi:如何在虚方法上调用继承的继承祖先?

发布时间:2020-12-15 10:13:29 所属栏目:大数据 来源:网络整理
导读:我正在覆盖一个虚方法,我想调用继承。但我不想打电话给直接的祖先,我想先打电话给那个。 TObject TDatabaSEObject TADODatabaSEObject ---call this guy TCustomer ---skip this guy TVIP ---from this guy 我尝试将自己作为祖先投射,然后调用该方法,但
我正在覆盖一个虚方法,我想调用继承。但我不想打电话给直接的祖先,我想先打电话给那个。
TObject
   TDatabaSEObject
      TADODatabaSEObject <---call this guy
         TCustomer        <---skip this guy
            TVIP           <---from this guy

我尝试将自己作为祖先投射,然后调用该方法,但它导致递归堆栈溢出:

procedure TVip.SetProperties(doc: IXMLDOMDocument);
begin
   TADODatabaSEObject(Self).SetProperties(doc); //skip over TCustomer ancestor
   ...
end;

我尝试添加继承的关键字,但不编译:

procedure TVip.SetProperties(doc: IXMLDOMDocument);
begin
   inherited TADODatabaSEObject(Self).SetProperties(doc); //skip over TCustomer ancestor
   ...
end;

可能?

解决方法

你不能用常规的语言方式,因为这会破坏语言的面向对象方面。

你可以摆弄指针和聪明的演员来做到这一点,但在开始回答之前:这真的是你想要的吗?

正如其他人所说:你的需要听起来像一个严肃的“设计气味”(类似于code smell,但更严重。

编辑:

走下指针摆弄道路可能会在短期内节省你的工作,并且从长远来看你需要花费数周时间。
这样可以很好地阅读:Upstream decisions,downstream costs。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读