抽象客观世界实体的模块化
把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展
父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
类是创建对象的模板
对象是类的实例
属性类型 | ABAP语句 |
---|---|
实例属性 | DATA |
静态属性 | CLASS-DATA |
方法类型 | ABAP语句 |
实例属性 | METHODS |
静态属性 | CLASS-METHODS |
特殊方法 | CONSTRUTOR、CLASS-CONSTRUCTOR、EVENTS |
事件 | ABAP语句 |
事件声明 | EVENTS evt EXPORTING … VALUE(e1 e2) TYPE type |
调用事件(Trigger) | RAISE EVENT evt EXPORTING e1 = f1 e2 = f2 … |
Event Handler声明 | METHODS meth FOR EVENT evt OF cif IMPORTING e1 e2 |
Event Handler注册/登陆 | SET HANDLER h1 h2 [FOR] … |
"变量定义和方法定义
CLASS CL DEFINITION.
PUBLIC SECTION.
DATA: LV_DATA TYPE C LENGTH 20.
METHODS SET_DATA IMPORTING GV_IMP TYPE CHAR20.
METHODS GET_DATA EXPORTING GV_EXP TYPE CHAR20.
EVENTS:TOO_FAST EXPORTING VALUE(P1) TYPE I.
METHODS WRITE_DATA.
ENDCLASS.
"方法的实现
CLASS CL IMPLEMENTATION.
METHOD SET_DATA.
LV_DATA = GV_IMP.
ENDMETHOD.
METHOD GET_DATA.
WRITE LV_DATA.
GV_EXP = LV_DATA.
ENDMETHOD.
ENDCLASS.
"类的使用
DATA OBJ TYPE REF TO CL. “声明对象
CREATE OBJECT: OBJ.实例化类
"方法的调用
CALL METHOD OBJ->SET_DATA
EXPORTING
GV_IMP = '测试1'.
CALL METHOD OBJ->GET_DATA
IMPORTING
GV_EXP = LV_DATA1.
TYPE REF TO 用来定义一个数据对象,这个数据对象用来指向另外数据的; TYPE 用来定义一个数据对象,它本身就是一个存储数据的对象,不是用来指向别的数据对象。
DATA OBJ TYPE REF TO CL. 属于ABAP面向对象编程,CL是一个类,OBJ定义了这个类的对象。 CREATE OBJECT:OBJ. "实例化类