SAP ABAP 继承

面向对象编程中最重要的概念之一是继承。 继承允许我们根据另一个类定义一个类,这使得创建和维护应用程序变得更容易。 这也提供了重用代码功能和快速实现时间的机会。

赛锐信息:SAP ABAP 继承 图1
赛锐信息,SAP ERP定制,ERP定制

当创建类时,程序员可以指定新类应该继承现有类的成员,而不是写入完全新的数据成员和方法。 此现有类称为基类超类,新类称为派生类子类 。

  • 一个类的对象可以获取另一个类的属性。
  • 派生类继承超类的数据和方法。 但是,他们可以覆盖方法,并添加新的方法。
  • 继承的主要优点是可重用性。

除了类定义语句之外,还使用“INHERITING FROM”指定继承关系。

以下是语法:

CLASS <subclass> DEFINITION INHERITING FROM <superclass>.

例子

Report ZINHERITAN_1. 
CLASS Parent Definition. 
PUBLIC Section. 
Data: w_public(25) Value 'This is public data'. 
Methods: ParentM. 
ENDCLASS. 

CLASS Child Definition Inheriting From Parent. 
PUBLIC Section. 
Methods: ChildM. 
ENDCLASS. 

CLASS Parent Implementation. 
Method ParentM. 
Write /: w_public. 
EndMethod. ENDCLASS. 

CLASS Child Implementation. 
Method ChildM. 
Skip. 
Write /: 'Method in child class', w_public.
EndMethod. 
ENDCLASS. 

Start-of-selection. 
Data: Parent Type Ref To Parent, 
Child Type Ref To Child. 
Create Object: Parent, Child. 
Call Method: Parent→ParentM, 
child→ChildM.

上面的代码产生以下输出:

This is public data 
Method in child class 
This is public data

访问控制和继承

派生类可以访问其基类的所有非私有成员。 因此,应该不能被子类的成员函数访问的超类成员应该在超类中被声明为私有的。 我们可以根据谁可以通过以下方式访问它们来总结不同的访问类型:

访问公开保护私密
同班YesYesYes
派生类YesYesNo
外面YesNoNo

当从一个超类派生一个类时,它可以通过公共,保护或私有继承继承。 继承的类型由访问说明符指定,如上所述。 我们几乎不使用保护或私有继承,但公共继承是常用的。 在使用不同类型的继承时应用以下规则。

  • 公共继承 – 从公共超类派生类时,超类的公共成员将成为子类的公共成员,超类的受保护成员将成为子类的受保护成员。 超类的私有成员永远不能直接从子类访问,但可以通过调用public和受保护的超类的成员来访问。
  • 受保护的继承 – 从受保护的超类派生时,超类的公共和受保护成员将成为子类的受保护成员。
  • 私有继承 – 从私有超类派生时,超类的公共和受保护成员将成为子类的私有成员。

子类中的重定义方法

超类的方法可以在子类中重新实现。 重新定义方法的几个规则:

  • 继承方法的重定义语句必须与原始方法的定义在同一节中。
  • 如果重新定义一个方法,则不需要在子类中再次输入其接口,而只需要输入方法的名称。
  • 在重定义的方法中,可以使用超级引用访问直接超类的组件。
  • 伪引用超级只能在重定义的方法中使用。

例子

Report Zinheri_Redefine. 
CLASS super_class Definition. 
Public Section. 
Methods: Addition1 importing g_a TYPE I
                             g_b TYPE I
		   exporting g_c TYPE I.
ENDCLASS. 

CLASS super_class Implementation. 
Method Addition1. 
g_c = g_a + g_b. 
EndMethod. 
ENDCLASS. 

CLASS sub_class Definition Inheriting From super_class. 
Public Section. 
METHODS: Addition1 Redefinition. 
ENDCLASS. 

CLASS sub_class Implementation. 
Method Addition1. 
g_c = g_a + g_b + 10. 
EndMethod. 
ENDCLASS. 

Start-Of-Selection. 
Parameters: P_a Type I, P_b TYPE I. 
Data: H_Addition1 TYPE I. 
Data: H_Sub TYPE I. 
Data: Ref1 TYPE Ref TO sub_class. 
Create Object Ref1. 
Call Method Ref1→Addition1 exporting g_a = P_a 
                                     g_b = P_b
		           Importing g_c = H_Addition1. 
Write:/ H_Addition1.

执行F8后,如果我们输入值9和10,上面的代码产生以下输出 :

赛锐信息:SAP ABAP 继承 图2
赛锐信息,SAP ERP定制,ERP定制
Redefinition Demo 
29

关于赛锐信息

作为SAP的资深合作伙伴,赛锐信息是一家专业提供SAP行业化管理软件解决方案的顾问公司,致力于为企业提供SAP ERP系统咨询服务、IT规划、业务流程优化、信息系统实施、行业信息系统方案开发,运营外包及售后维护等全面的服务方案。已服务1000+家不同行业、规模的大中小型企业客户。在电子高科技、汽车零部件、印刷包装、医疗器械、快消品、专业服务等行业信息化管理领域具有领导性地位。

相关文章

联系我们

联系我们

130-0752-1773

在线咨询:点击这里给我发消息

邮件:info@sapzx.com

工作时间:周一至周五9:00-18:00,节假日正常休息

关注微信
关注微信
分享本页
返回顶部