我们可以通过使用父类对象访问子类特定方法的公共方法吗?

2020-09-14 22:27发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我试图通过使用窄转换...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我试图通过使用窄转换使用父类引用对象来访问子类特定方法的公共方法,但是我无法访问。

那么我如何通过使用父类的引用对象访问子类的公共方法?

如果可能

付费偷看设置
发送
4条回答
南山jay
1楼-- · 2020-09-14 23:20
 CAST class_child(parent)-> child_method()。

 要么

 数据子类型ref指向class_child。
 孩子?=父母。
 child-> child_method()。

 

昵称总是被占用
2楼-- · 2020-09-14 23:02

我给了你一个代码片段。 我不太确定你听不懂什么。

也许这会让事情变得清晰起来。

 CLASS lcl_parent定义。

 ENDCLASS。

 CLASS lcl_child从lcl_parent继承。
   公共部分。
     方法child_method。
 ENDCLASS。

 类别lcl_child实施。
   方法child_method。
     写入"已调用子方法"。
   终结法。
 ENDCLASS。

 选择开始。
   DATA父类型引用到lcl_parent。
   创建对象父类型TYPE lcl_child。

   DATA子类型TYPE引用到lcl_child。
   孩子?=父母。
   child-> child_method()。
 

如果将父引用变量转换为子类引用类型的引用变量,则可以访问在子类上定义的方法。 (假设父级实际上是子级实例。)

bbpeas
3楼-- · 2020-09-14 23:09

当进行窄类型转换时,我们不能直接调用子级方法。 您需要动态调用该方法。 请确保将其缩小,否则您将遇到简短的转储。

例如:调用方法parent_class_ref->('child_specific_method')。

在此示例中,编译器在编译期间不针对parent_class_ref检查child_specific_method的存在。

希望这会有所帮助。

Ravi

黑丝骑士
4楼-- · 2020-09-14 23:22

您采用的做法不尽人意,并且在代码中添加了一个弱点。

如果使用此方法,并且方法名称更改,则会出现运行时错误。 如果使用我建议的方法,则会出现语法错误。

语法错误比运行时错误更容易,更快速,更便宜地解决。

一周热门 更多>