- 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 - 开放 SQL 概述
- SAP ABAP - 本机 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 - SAP 脚本
- 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”方法以及定义其各自实例Behave的特定方法,例如 add_number 和 speed1 方法。
注意- add_number 和 speed1 方法特定于各自的类。