类的相关

定义 例子1

REPORT zcp_saptest2 .
*---------------------------------------------------------------------*
*       CLASS vehicle DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS vehicle DEFINITION.
  PUBLIC SECTION.
    CLASS-DATA class_name(10) TYPE c VALUE 'Vehicle'.
    METHODS:accelerate,
    show_speed.
  PROTECTED SECTION.
    DATA speed TYPE i.
ENDCLASS.
*---------------------------------------------------------------------*
*       CLASS vehicle IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS vehicle IMPLEMENTATION.
  METHOD accelerate.
    speed = speed + 1.
  ENDMETHOD.
  METHOD show_speed.
    WRITE:/ 'speed:',speed.
  ENDMETHOD.
ENDCLASS.
DATA: g_vehicle TYPE REF TO vehicle.

  START-OF-SELECTION.
  write vehicle=>class_name.
  CREATE OBJECT g_vehicle.
  DO 5 TIMES.
    CALL METHOD g_vehicle->accelerate.
    CALL METHOD g_vehicle->show_speed.
  ENDDO.
 
例子2
REPORT  zcp_saptest3.
*---------------------------------------------------------------------*
*       CLASS vehicle DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS vehicle DEFINITION.
  PUBLIC SECTION.
    METHODS: accelerate IMPORTING rate TYPE i,
             constructor importing i_speed type i,            "构造方法
             show_speed.
*  PRIVATE SECTION.
    class-DATA speed TYPE i VALUE 0.
ENDCLASS.
*---------------------------------------------------------------------*
*       CLASS vehicle IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS vehicle IMPLEMENTATION.
  METHOD accelerate.
    speed = speed + rate.
  ENDMETHOD.
  METHOD show_speed.
    WRITE:/ 'speed:',speed.
  ENDMETHOD.
  method  constructor.
  speed = i_speed.
  endmethod.
  ENDCLASS.
DATA o_vehicle TYPE REF TO vehicle.
START-OF-SELECTION.
  vehicle=>speed = 5.
  CREATE OBJECT o_vehicle exporting i_speed = 1.
  CALL METHOD o_vehicle->accelerate EXPORTING rate = 2.
  CALL METHOD o_vehicle->accelerate EXPORTING rate = 2.
  CALL METHOD o_vehicle->show_speed.
 
继承重载的例子

REPORT  zcp_saptest4.

*---------------------------------------------------------------------*
*       CLASS vehicle DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS vehicle DEFINITION INHERITING FROM object.
  PUBLIC SECTION.
    METHODS: accelerate,write_status.
  PROTECTED SECTION.
    DATA speed TYPE i.
ENDCLASS.

*---------------------------------------------------------------------*
*       CLASS plane DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS plane DEFINITION INHERITING FROM vehicle.
  PUBLIC SECTION.
    METHODS: rise, write_status REDEFINITION.
  PROTECTED SECTION.
    DATA altitude TYPE i.
ENDCLASS.

*---------------------------------------------------------------------*
*       CLASS ship DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS ship DEFINITION INHERITING FROM vehicle.
  PUBLIC SECTION.
    METHODS write_status REDEFINITION.
ENDCLASS.
*---------------------------------------------------------------------*
*       CLASS vehicle IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS vehicle IMPLEMENTATION.
  METHOD accelerate.
    speed = speed + 1.
  ENDMETHOD.
  METHOD write_status.
    WRITE:/ 'Speed:',speed.
  ENDMETHOD.
ENDCLASS.

*---------------------------------------------------------------------*
*       CLASS plane IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS plane IMPLEMENTATION.
  METHOD rise.
    altitude = altitude + 1.
  ENDMETHOD.
  METHOD write_status.
    WRITE / 'Plane:'.
    CALL METHOD super->write_status.
    WRITE:/ 'Altitude:',altitude.
  ENDMETHOD.
ENDCLASS.
*---------------------------------------------------------------------*
*       CLASS ship IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS ship IMPLEMENTATION.
  METHOD write_status.
    WRITE:/ 'Ship speed:',speed.
  ENDMETHOD.
ENDCLASS.

data: plane_ref type ref to plane,
ship_ref type ref to ship.

start-of-selection.
create object: plane_ref,ship_ref.
call method: plane_ref->accelerate,
             plane_ref->rise,
             plane_ref->write_status,
             ship_ref->accelerate,
             ship_ref->write_status.

 

类的事件

REPORT  zcp_saptest5.
*---------------------------------------------------------------------*
*       CLASS vehicle DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS vehicle DEFINITION INHERITING FROM object.
  PUBLIC SECTION.
    EVENTS: too_fast.
    METHODS: accelerate,write_status.
  PROTECTED SECTION.
    DATA speed TYPE i.
ENDCLASS.
*---------------------------------------------------------------------*
*       CLASS vehicle IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS vehicle IMPLEMENTATION.
  METHOD accelerate.
    speed = speed + 1.
    IF speed > 5.
      RAISE EVENT too_fast.
*    speed = speed - 1.
    ENDIF.
  ENDMETHOD.
  METHOD write_status.
    WRITE:/ 'Speed:',speed.
  ENDMETHOD.
ENDCLASS.
*---------------------------------------------------------------------*
*       CLASS handler DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS handler DEFINITION.
  PUBLIC SECTION.
    METHODS handle_excess FOR EVENT too_fast OF vehicle.
ENDCLASS.
*---------------------------------------------------------------------*
*       CLASS handler IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS handler IMPLEMENTATION.
  METHOD handle_excess.
    WRITE:/ 'Speed can not be too fast'.
*    speed = 10.
  ENDMETHOD.
ENDCLASS.
DATA: o_vehicle TYPE REF TO vehicle,
      o_handle  TYPE REF TO handler.
START-OF-SELECTION.
  CREATE OBJECT: o_vehicle,o_handle.
  SET HANDLER o_handle->handle_excess FOR ALL INSTANCES.
  DO 11 TIMES.
    CALL METHOD o_vehicle->accelerate.
    CALL METHOD o_vehicle->write_status.
  ENDDO.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值