SAP ABAP 接口

2018-01-03 09:09 更新

類(lèi)似于A(yíng)BAP中的類(lèi),接口充當(dāng)對(duì)象的數(shù)據(jù)類(lèi)型。 接口的組件與類(lèi)的組件相同。 與類(lèi)的聲明不同,接口的聲明不包括可見(jiàn)性部分。 這是因?yàn)樵诮涌诼暶髦卸x的組件總是集成在類(lèi)的public visibility部分。

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

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

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

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

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

我們?cè)陬?lèi)的實(shí)現(xiàn)部分使用以下語(yǔ)法:

INTERFACE <intf_name>. 

在此語(yǔ)法中,< intf_name> 表示接口的名稱(chēng)。 請(qǐng)注意,此語(yǔ)法必須在類(lèi)的public部分中使用。

以下語(yǔ)法用于實(shí)現(xiàn)類(lèi)中實(shí)現(xiàn)接口的方法:

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

在該語(yǔ)法中,< intf_name?method_m> 表示< intf_name>的方法的完全聲明的名稱(chēng)。 接口。

例子

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'方法的接口的名稱(chēng)。 接下來(lái),定義和實(shí)現(xiàn)兩個(gè)類(lèi),num_counter和drive1。 這兩個(gè)類(lèi)實(shí)現(xiàn)了'msg'方法,以及定義它們各自實(shí)例的行為的特定方法,例如add_number和speed1方法。

注意 - add_number和speed1方法特定于各個(gè)類(lèi)。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)