BC404学习笔记-ABAP面向对象编程(二)-继承中的构造函数

关于构造函数注意的是:

1. CREATE OBJECT  的时候会自动调用构造函数

2.父类自定义了构造函数后,子类必须在其构造函数里面调用父类的构造函数 call METHOD super->constructor,并且是在子类构造函数里的第一条语句。这样做是为了能确保对象正确的被实例化。可以这样理解,子类时继承父类的,所以先得构造出父类,子类才知道继承的是个什么东东。另外一方面,子类可以直接使用父类的public的变量和方法,所以得先调用父类构造方法初始化父类的数据。

3.构造函数可以有多个,参数列表不一样就行。参考重载

4.静态构造函数,不用在子类构造函数中调用。系统会自动调用。并且会先调用静态构造函数

REPORT ZYHYCAST.

CLASS lcl_airplane DEFINITION.
  PUBLIC SECTION.
  DATA: p TYPE i.
    METHODS:
      get_name EXPORTING name1 TYPE string,
      constructor. "构造函数(无参) 也可以
      
  PRIVATE SECTION.
    DATA: name TYPE string,
          fuel TYPE n LENGTH 10.

ENDCLASS.
CLASS lcl_airplane IMPLEMENTATION.
  METHOD constructor.
    name = 'lcl_airplane'.
    write:/ 'call lcl_airplane constructor'.

  ENDMETHOD.
  METHOD get_name.
    name1 = name.
  ENDMETHOD.
ENDCLASS.

CLASS lcl_cargo_airplane DEFINITION INHERITING FROM lcl_airplane.
  PUBLIC SECTION.
    METHODS: constructor,
             get_cargo EXPORTING cargo_name TYPE string.
  PRIVATE SECTION.
    DATA: cargo TYPE string.

ENDCLASS.

CLASS lcl_cargo_airplane IMPLEMENTATION .
  METHOD constructor.
    call METHOD super->constructor."必须调用父类构造函数(如果父类有)

    cargo = 'cargo_airplane'.
    "p = 1.      "正确,可以直接访问父类的公有变量
    "fuel = '1'. "错误 不能直接访问父类的私有变量
    WRITE: /'call lcl_cargo_airplane construtor : cargo=', cargo.
  ENDMETHOD.

  METHOD get_cargo .
    cargo_name = cargo.
  ENDMETHOD.

ENDCLASS.



DATA: airplane TYPE REF TO lcl_airplane,
      cargo_airplane TYPE REF TO lcl_cargo_airplane.
DATA: temp TYPE string.

START-OF-SELECTION.

  CREATE OBJECT airplane.
  CREATE OBJECT cargo_airplane.


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值