SAP ABAP - 介面



類似於 ABAP 中的類,介面充當物件的**資料型別**。介面的組成部分與類的組成部分相同。與類的宣告不同,介面的宣告不包含可見性部分。這是因為在介面宣告中定義的元件始終整合在類的公共可見性部分中。

當兩個類似的類具有相同名稱的方法但功能彼此不同的情況下,可以使用介面。介面可能看起來類似於類,但是介面中定義的功能在類中實現以擴充套件該類的範圍。介面以及繼承功能為多型提供了基礎。這是因為在介面中定義的方法在不同的類中可以表現出不同的行為。

以下是建立介面的一般格式:

INTERFACE <intf_name>. 
DATA..... 
CLASS-DATA..... 
METHODS..... 
CLASS-METHODS..... 
ENDINTERFACE.

在此語法中,<intf_name> 表示介面的名稱。DATA 和 CLASSDATA 語句可分別用於定義介面的例項和靜態屬性。METHODS 和 CLASS-METHODS 語句可分別用於定義介面的例項和靜態方法。由於介面的定義不包含實現類,因此在介面的宣告中不需要新增 DEFINITION 子句。

注意 - 介面的所有方法都是抽象的。它們已完全宣告,包括其引數介面,但未在介面中實現。所有想要使用介面的類都必須實現介面的所有方法。否則,該類將成為抽象類。

我們在類的實現部分使用以下語法:

INTERFACE <intf_name>. 

在此語法中,<intf_name> 表示介面的名稱。請注意,此語法必須用於類的公共部分。

以下語法用於在類的實現中實現介面的方法:

METHOD <intf_name~method_m>. 
<statements>. 
ENDMETHOD.

在此語法中,<intf_name~method_m> 表示 <intf_name> 介面的方法的完整宣告名稱。

示例

Report ZINTERFACE1. 
INTERFACE my_interface1. 
Methods msg. 
ENDINTERFACE. 

CLASS num_counter Definition. 
PUBLIC Section. 
INTERFACES my_interface1. 
Methods add_number. 
PRIVATE Section. 
Data num Type I. 
ENDCLASS. 

CLASS num_counter Implementation. 
Method my_interface1~msg. 
Write: / 'The number is', num. 
EndMethod. 

Method add_number. 
ADD 7 TO num. 
EndMethod. 
ENDCLASS. 

CLASS drive1 Definition. 
PUBLIC Section. 
INTERFACES my_interface1. 
Methods speed1.
PRIVATE Section.
Data wheel1 Type I. 
ENDCLASS. 

CLASS drive1 Implementation.
Method my_interface1~msg.
Write: / 'Total number of wheels is', wheel1. 
EndMethod. 

Method speed1. 
Add 4 To wheel1. 
EndMethod. 
ENDCLASS. 

Start-Of-Selection. 
Data object1 Type Ref To num_counter. 
Create Object object1. 

CALL Method object1→add_number.
CALL Method object1→my_interface1~msg.

Data object2 Type Ref To drive1. 
Create Object object2.
 
CALL Method object2→speed1. 
CALL Method object2→my_interface1~msg. 

以上程式碼產生以下輸出:

The number is 7 
Total number of wheels is 4

在上面的示例中,my_interface1 是一個介面的名稱,其中包含“msg”方法。接下來,定義並實現了兩個類 num_counter 和 drive1。這兩個類都實現了“msg”方法,以及定義其各自例項行為的特定方法,例如 add_number 和 speed1 方法。

注意 - add_number 和 speed1 方法特定於各自的類。

廣告

© . All rights reserved.