方法的重载、类的继承
REPORT Z_METHOD_REDEFINITION.
CLASS vehicle DEFINITION INHERITING FROM object. 所有的类都继承 object
PUBLIC SECTION.
METHODs:accelerate,write_status.
PROTECTED SECTION.
DATA speed type i.
ENDCLASS.
CLASS plane DEFINITION INHERITING FROM vehicle. “继承基类vehicle,必须使用关键字INHERITING FROM
PUBLIC SECTION.
METHODs:rise,write_status REDEFINITION. 方法write_status 在子类中将会被重载,重新定义,必须用关键字REDEFINITION声明
PROTECTED SECTION.
DATA altitude TYPE i.
ENDCLASS.
CLASS ship DEFINITION INHERITING FROM vehicle.
PUBLIC SECTION.
METHODs write_status REDEFINITION.
ENDCLASS.
CLASS vehicle IMPLEMENTATION.
METHOD accelerate.
speed = speed + 1.
ENDMETHOD.
METHOD write_status.
WRITE: / 'Speed:', speed.
ENDMETHOD.
ENDCLASS.
CLASS plane IMPLEMENTATION.
METHOD rise.
altitude = altitude + 1.
ENDMETHOD.
METHOD write_status.
WRITE / 'Plane:'.
CALL METHOD super->write_status. 在子类中如果想使用基类中的原始方法时必须在子类实现的内部调用,必须用关键字super
WRITE: / 'Altitude:',altitude.
ENDMETHOD.
ENDCLASS.
CLASS ship IMPLEMENTATION.
METHOD write_status.
WRITE: / 'Ship speed:',speed.
ENDMETHOD.
ENDCLASS.
DATA:plane_Ref TYPE REF TO plane, 创建一个引用数据对象,该数据对象的类型定义为指向一个类plane的对象指针
ship_ref TYPE REF TO ship.
START-OF-SELECTION.
CREATE OBJECT :plane_Ref,ship_ref. 定义指针后,create object plane是创建这个类的实例
call METHOD :plane_Ref->accelerate,
plane_Ref->rise,
plane_ref->write_status,
ship_ref->accelerate,
ship_ref->write_status.