您的位置:首页 > 编程语言

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

2016-04-12 14:41 344 查看
关于构造函数注意的是:

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: