SAP ABAP 接口

2018-01-03 09:09 更新

類似于ABAP中的類,接口充當(dāng)對象的數(shù)據(jù)類型。 接口的組件與類的組件相同。 與類的聲明不同,接口的聲明不包括可見性部分。 這是因為在接口聲明中定義的組件總是集成在類的public visibility部分。

當(dāng)兩個類似的類具有相同名稱的方法但功能彼此不同時,使用接口。 接口可能看起來類似于類,但是接口中定義的函數(shù)在類中實現(xiàn)以擴(kuò)展該類的范圍。 接口以及繼承特性為多態(tài)性提供了基礎(chǔ)。 這是因為在接口中定義的方法在不同類中的行為可能不同。

以下是創(chuàng)建接口的一般格式:

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

在此語法中,< intf_name> 表示接口的名稱。 DATA和CLASSDATA語句可以分別用于定義接口的實例和靜態(tài)屬性。 METHODS和CLASS-METHODS語句可以分別用于定義接口的實例和靜態(tài)方法。 由于接口的定義不包括實現(xiàn)類,因此沒有必要在接口的聲明中添加DEFINITION子句。

注意 - 接口的所有方法都是抽象的。 它們是完全聲明的,包括它們的參數(shù)接口,但是沒有在接口中實現(xiàn)。 所有想要使用接口的類都必須實現(xiàn)接口的所有方法。 否則,該類將成為抽象類。

我們在類的實現(xiàn)部分使用以下語法:

INTERFACE <intf_name>. 

在此語法中,< intf_name> 表示接口的名稱。 請注意,此語法必須在類的public部分中使用。

以下語法用于實現(xiàn)類中實現(xiàn)接口的方法:

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. 

上面的代碼產(chǎn)生以下輸出 :

The number is 7 
Total number of wheels is 4

在上面的示例中,my_interface1是包含'msg'方法的接口的名稱。 接下來,定義和實現(xiàn)兩個類,num_counter和drive1。 這兩個類實現(xiàn)了'msg'方法,以及定義它們各自實例的行為的特定方法,例如add_number和speed1方法。

注意 - add_number和speed1方法特定于各個類。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號