如何从子类方法访问超类’方法?
这是一个说明问题的示例:
可以说,我们有两个班级
class parent definition.
public section.
methods f.
endclass.
class child definition inheriting from parent.
public section.
methods f redefinition.
methods g.
endclass.
现在,在g的实现中我们要调用类的超类’实现类似于以下语法错误的片段
class child implementation.
method g.
super->f( ). "forbidden: super-> can only be used to call the previous implementation of the same method
endmethod.
endclass.
如评论中所述,不可能使用super->.你能帮我吗?
经过一些谷歌搜索后,有人建议将parent-> f的实现复制到child-> g这真的是唯一的方法吗?
实际用例
@vwegert问为什么f首先被重新定义.在我的实际用例中,parent是一个视图,而child是它的扩展. child-> f是一个应该触发弹出窗口的事件处理程序.当弹出窗口以对g的调用形式关闭时,子进行回调.如果调用g,则应调用原始实现parent-> f.
最佳答案 你将不得不求助于一些相当丑陋的解决方法 – 比如在g中设置一个标志(对象的属性),然后调用重新定义的f,检查标志是否已设置,如果是,则只调用super-> f.不过,这听起来像是一个非常破碎的设计.你没有详细介绍,但我认为你无法改变父视图 – 否则我强烈建议重新考虑设计,因为这将导致不必要的复杂性和技术债务很可能会引入错误并增加维护成本.