二维码

[面向对象] ABAP中每次CREATE OBJECT创建对象都是独立的

Twilight发表于 2016-04-13 10:37Twilight 最后回复于 2016-04-13 10:37 [复制链接] 6237 0

r_plane    TYPE REF TO lcl_airplane定义引用参考变量,CREATE OBJECT创建对象,但每次创建对象都是不同的。
  1. REPORT yleon_001.

  2. INCLUDE yleon_001_airs_a.

  3. DATA: r_plane    TYPE REF TO lcl_airplane,
  4.       plane_list TYPE TABLE OF REF TO lcl_airplane.

  5. START-OF-SELECTION.

  6.   CREATE OBJECT r_plane.
  7.   APPEND r_plane TO plane_list.
  8.   CREATE OBJECT r_plane.
  9.   APPEND r_plane TO plane_list.
  10.   CREATE OBJECT r_plane.
  11.   APPEND r_plane TO plane_list.
  12.   APPEND r_plane TO plane_list.
  13.   APPEND r_plane TO plane_list.
复制代码
  1. *&---------------------------------------------------------------------*
  2. *&  包含                YLEON_001_AIRS_A
  3. *&---------------------------------------------------------------------*
  4. CLASS lcl_airplane DEFINITION.
  5.   PUBLIC SECTION.
  6.     CONSTANTS: pos_1 TYPE i VALUE 30.
  7.     METHODS: set_attributes IMPORTING
  8.                               im_name      TYPE string
  9.                               im_planetype TYPE saplane-planetype,
  10.       display_attributes.
  11.     CLASS-METHODS: display_n_o_airplanes.

  12.   PRIVATE SECTION.
  13.     DATA: name      TYPE string,
  14.           planetype TYPE saplane-planetype.
  15.     CLASS-DATA: n_o_airplanes TYPE i.

  16. ENDCLASS. "lcl_airplane DEFINITION

  17. CLASS lcl_airplane IMPLEMENTATION.
  18.   METHOD set_attributes.
  19.     name = im_name.
  20.     planetype = im_planetype.
  21. * doesn't make sense so much -
  22. * only in order to get an effect
  23. * after calling display_n_o_airplanes:
  24.     n_o_airplanes = n_o_airplanes + 1.
  25.   ENDMETHOD. "set_attributes

  26.   METHOD display_attributes.
  27.     WRITE: / icon_ws_plane AS ICON,
  28.     / 'Name of airplane:'(001), AT pos_1 name,
  29.     / 'Airplane type'(002), AT pos_1 planetype.
  30.   ENDMETHOD. "display_attributes

  31.   METHOD display_n_o_airplanes.
  32.     WRITE: /, / 'Total number of planes'(ca1),
  33.     AT pos_1 n_o_airplanes LEFT-JUSTIFIED, /.
  34.   ENDMETHOD. "display_n_o_airplanes

  35. ENDCLASS. "lcl_airplane IMPLEMENTATION
复制代码

调试结果:
create object.jpg
可以看到虽然每次CREATE OBJECT创建对象的名字都是一样的,但是他们在内存中的地址是不一样的。
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表