面向对象开发的特点:封装、继承和多态
什么是类和对象?
类(CLASS)是创建对象的模板,对象(OBJECT)是类的实例
一个类可以创建多个对象
类 => 类型对象 => 个体
在ABAP语言中,定义一个类,需要包含定义(definition) 和 实现(implementation)两部分
语法格式
* 定义类
CLASS <class> DEFINITION....
ENDCLASS.* 实现类
CLASS <class> IMPLEMENTATION....
ENDCLASS.
提示Tips
完整的class代码包含定义(definition) 和实现(implementation)两部分
定义(definition)部分声明该类包含的 attributes属性, methods方法 和 constructors事件
实现(implementation)部分用来实现 constructor 和 method 的逻辑
类的优点:① 可以进行数据封装 ② 可以重复调用代码
ABAP支持 local class(本地类) 和 global class(全局类)
local class 通过事务码 SE38/SE80 创建,只能在程序中定义并在该程序中使用
global class 通过事务码 SE24 来创建,在所有的ABAP程序中都能使用
示例1:定义一个 Book 类,Book 类有 Title、Author、Publisher 和 Price 四个属性
REPORT z437_test_2024.*----------------------------------------------------------------------*
* CLASS book DEFINITION
*----------------------------------------------------------------------*
CLASS book DEFINITION.PUBLIC SECTION.DATA: title TYPE string,author TYPE string,publisher TYPE string,price TYPE p DECIMALS 2.METHODS: print_info.
ENDCLASS.*----------------------------------------------------------------------*
* CLASS book IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS book IMPLEMENTATION.METHOD print_info.WRITE: / 'Title:', title,/ 'Author:', author,/ 'Publisher:', publisher,/ 'Price:', price.ENDMETHOD.
ENDCLASS.START-OF-SELECTION." 定义引用类型的变量DATA: book1 TYPE REF TO book,book2 TYPE REF TO book." 创建book的实例CREATE OBJECT book1.book1->title = '活着'.book1->author = '余华'.book1->publisher = '上海文艺出版社'.book1->price = '39.5'." 创建book的实例CREATE OBJECT book2.book2->title = '人间失格'.book2->author = '太宰治'.book2->publisher = '作家出版社'.book2->price = '18.8'.book1->print_info( ).book2->print_info( ).
输出结果:
上面示例1通过 DATA 定义的属性为实例属性,在 ABAP 中我们可以使用 ->
符号调用对象实例的属性或方法
类创建对象的过程称为实例化类创建的对象称为实例( Instance)