*&---------------------------------------------------------------------*
*& Report ZTEST_ABAP_5
*&
*&---------------------------------------------------------------------*
*&本程序是关于abap的面向对象初步练习(类和对象)
*&
*&---------------------------------------------------------------------*
REPORT ztest_abap_5.
*类的使用有以下四步:
*1. 声明类并定义使用方法
*2. 使用data中的type ref to 来表示引用的具体类
*3. 使用create object创建类实例对象
*4. 通过->或者=>运算符访问类对象或者组件,可定义方法名来实现对类方法的动态调用
*
*以下将会根据上面说的四步来实现类的实例
*声明类
CLASS callobj DEFINITION.
PUBLIC SECTION.
CLASS-DATA: para(30) VALUE 'This is a static parameter!'."定义静态变量
DATA: count TYPE i."定义类的成员变量
METHODS: showdata1,"定义方法
showdata2.
CLASS-METHODS: show_static_method.
PRIVATE SECTION."定义私有成员
METHODS: showdata3.
ENDCLASS.
*定义类的实现功能
CLASS callobj IMPLEMENTATION.
METHOD showdata1."定义第一个方法的行为/功能
WRITE: / 'hello sap'.
ENDMETHOD.
METHOD showdata2.
count = 1.
WRITE: / count.
CALL METHOD showdata3."内部调用私有方法
ENDMETHOD.
METHOD showdata3.
WRITE: / 'This is the private method!'.
ENDMETHOD.
METHOD show_static_method.
WRITE: / 'THIS IS THE STATIC METHOD!'.
ENDMETHOD.
ENDCLASS.
*声明引用类并创建实例对象,使用上面定义的方法/功能
DATA obj TYPE REF TO callobj."声明引用参照类的变量
DATA methodname TYPE string."定义方法名变量
START-OF-SELECTION.
CREATE OBJECT obj."创建类实例对象
methodname = 'SHOWDATA2'."为方法名变量赋值,注意:方法名要大写
CALL METHOD: obj->showdata1."调用方法
CALL METHOD: obj->(methodname)."通过方法名变量调用方法
CALL METHOD: callobj=>show_static_method."类名调用静态方法