ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

115、继承与多重继承(ABAP的替代关系)

115、继承与多重继承(ABAP的替代关系) 115、继承与多重继承(ABAP的替代关系)调试一个诡异问题时我差点掀了办公桌:子类里明明重写了父类方法,程序却依然走的是旧逻辑。断点打上去,Eclipse连个反应都不给,函数出栈后数据照旧。最后发现压根不是方法调用的问题,而是我把一个内表类型定义在了子类的私有区,父类里有个方法拿同样的结构名去定义行类型,两套体系从源头就分叉了。那会儿才真正意识到,ABAP里的“继承”不是C++那种天然多态,它更像一场有严格规矩的认亲仪式——你想让后代认祖归宗,先得把血脉里的每个零件都按官方家谱来配。很多人一上来就把ABAP的继承跟Java或C++的继承画等号,结果写出来的代码像个四不像。ABAP的类继承是单继承,每个类最多只能有一个直接父类。这个约束本身不痛苦,痛苦的是你总想在一个类里塞进两个“父亲”的功能——比如一边想要报表展示的接口,一边又想要标准ALV容器的行为。第一反应是“两个类我都继承”,不好意思,语法检查直接给你红叉。这时候你得换脑子:ABAP有替代方案,叫接口,或者叫组合。先看继承的基本盘。父类里定义的方法和属性,子类可以通过INHERITING FROM拿到,然后子类里重写方法用REDEFINITION。注意不是override,也别在REDEFINITION后乱加SUPER调用的次数,这地方我吃过亏。看代码:CLASS zcl_parent DEFINITION PUBLIC. PUBLIC SECTION. METHODS: get_
返回列表