REPORT Z_OO_01.
class simpleobj definition. " 类定义
public section. "public like java
methods show_text.
private section. "private like java
data text(40) TYPE c VALUE 'this is my first oo'.
ENDCLASS.
class simpleobj implementation. " 类的实现
method show_text.
WRITE text.
endmethod.
ENDCLASS.
data ob_app type ref to simpleobj. "定义类的实例变量
start-of-selection.
create object ob_app. " 创建实例对象,like new Object()
call method ob_app->show_text. " 类实例调用方法
---------------------------------------------------------------------------
REPORT Z_OO_02.
class vehicle definition.
PUBLIC SECTION.
class-data class_name(10) VALUE 'Vehicle'.
methods : accelerate,show_speed.
PROTECTED SECTION.
data speed TYPE i.
constants : pi TYPE p decimals 2 VALUE '3.14'.
ENDCLASS.
class vehicle IMPLEMENTATION.
METHOD accelerate.
speed = speed + 1.
ENDMETHOD.
method show_speed.
WRITE :/ 'Speed:',speed.
ENDMETHOD.
ENDCLASS.
data ob_app1 TYPE REF TO vehicle.
data ob_app2 TYPE REF TO vehicle.
data ob_app3 TYPE REF TO vehicle.
data o_vehicle TYPE REF TO vehicle.
start-of-selection.
create OBJECT : ob_app1,
ob_app2.
WRITE : 'ob_app1',ob_app1->class_name.
WRITE :/ 'ob_app2',ob_app1->class_name.
WRITE :/ 'vehicle',vehicle=>class_name.
skip.
vehicle=>class_name = 'Ship'.
WRITE : 'ob_app1',ob_app1->class_name.
WRITE :/ 'ob_app2',ob_app1->class_name.
WRITE :/ 'vehicle',vehicle=>class_name.
skip.
vehicle=>class_name = 'Bus'.
create object ob_app3.
WRITE :/ 'ob_app3',ob_app3->class_name.
call method ob_app3->accelerate.
call method ob_app3->show_speed.
create OBJECT o_vehicle.
DO 5 TIMES.
call METHOD o_vehicle->accelerate.
ENDDO.
call METHOD o_vehicle->show_speed.
data o_vehicle2 LIKE o_vehicle.
o_vehicle2 = o_vehicle.
clear o_vehicle.
if o_vehicle is not INITIAL.
call METHOD o_vehicle->show_speed.
endif.
call METHOD o_vehicle2->show_speed.
WRITE '对象只要有被引用的变量,就是活动的'.