- SAP ABAP 教程
- SAP ABAP - 首頁
- SAP ABAP - 概述
- SAP ABAP - 環境
- SAP ABAP - 螢幕導航
- SAP ABAP - 基本語法
- SAP ABAP - 資料型別
- SAP ABAP - 變數
- SAP ABAP - 常量和字面量
- SAP ABAP - 運算子
- SAP ABAP - 迴圈控制
- SAP ABAP - 決策
- SAP ABAP - 字串
- SAP ABAP - 日期和時間
- SAP ABAP - 資料格式化
- SAP ABAP - 異常處理
- SAP ABAP - 字典
- SAP ABAP - 域
- SAP ABAP - 資料元素
- SAP ABAP - 表格
- SAP ABAP - 結構
- SAP ABAP - 檢視
- SAP ABAP - 搜尋幫助
- SAP ABAP - 鎖物件
- SAP ABAP - 模組化
- SAP ABAP - 子程式
- SAP ABAP - 宏
- SAP ABAP - 函式模組
- SAP ABAP - 包含程式
- SAP ABAP - Open SQL 概述
- SAP ABAP - Native SQL 概述
- SAP ABAP - 內部表
- SAP ABAP - 建立內部表
- ABAP - 填充內部表
- SAP ABAP - 複製內部表
- SAP ABAP - 讀取內部表
- SAP ABAP - 刪除內部表
- SAP ABAP - 面向物件
- SAP ABAP - 物件
- SAP ABAP - 類
- SAP ABAP - 繼承
- SAP ABAP - 多型
- SAP ABAP - 封裝
- SAP ABAP - 介面
- SAP ABAP - 物件事件
- SAP ABAP - 報表程式設計
- SAP ABAP - 對話程式設計
- SAP ABAP - 智慧表單
- SAP ABAP - SAPscript
- SAP ABAP - 客戶出口
- SAP ABAP - 使用者出口
- SAP ABAP - 業務附加功能
- SAP ABAP - Web Dynpro
- SAP ABAP 有用資源
- SAP ABAP - 問答
- SAP ABAP - 快速指南
- SAP ABAP - 有用資源
- SAP ABAP - 討論
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 方法特定於各自的類。