子类构造函数中的错误 "No value was passed to the mandatory parameter"
Error "No value was passed to the mandatory parameter" in constructor of subclass
这是我的抽象超类:
class ZMP_ACAR definition
PUBLIC
ABSTRACT
create public .
public section.
DATA: maxSeats TYPE i,
maxKidSeats TYPE i,
carKidSeats TYPE TABLE OF REF TO z280819_kidseat,
carPeople TYPE TABLE OF REF TO z280819_person.
METHODS CONSTRUCTOR
IMPORTING maxSeats TYPE i
maxKidSeats TYPE i.
METHODS goToTrip ABSTRACT.
protected section.
private section.
ENDCLASS.
CLASS ZMP_ACAR IMPLEMENTATION.
METHOD CONSTRUCTOR.
me->maxSeats = maxSeats.
me->maxKidSeats = maxKidSeats.
ENDMETHOD.
ENDMETHOD.
ENDCLASS.
这是我继承自上面抽象超类的子类
class Z30082019_BMWCAR definition
public
inheriting from ZMP_ACAR
final
create public .
public section.
METHODS CONSTRUCTOR
IMPORTING maxSeats TYPE i
maxKidSeats TYPE i.
METHODS addKidSeatToCar REDEFINITION.
METHODS goToTrip REDEFINITION.
protected section.
private section.
ENDCLASS.
CLASS Z30082019_BMWCAR IMPLEMENTATION.
METHOD CONSTRUCTOR.
super->constructor( ). "--> ERROR: No value was passed to the mandatory parameter "MAXSEATS".
me->maxSeats = maxSeats.
me->maxKidSeats = maxKidSeats.
ENDMETHOD.
METHOD goToTrip.
...
ENDMETHOD.
ENDCLASS.
它在 Z30082019_BMWCAR 的构造函数实现中抛出错误 - 行见上:
ERROR: No value was passed to the mandatory parameter "MAXSEATS"
.
你能告诉我问题是什么吗?
从基础 class (ZMP_ACAR
) 构造函数的签名可以看出,它有两个强制(非可选)导入参数。在实例化派生的 class (Z30082019_BMWCAR
) 时提供它们。将多个参数传递给函数时,ABAP 语法有点臃肿,但这应该有效:
CLASS Z30082019_BMWCAR IMPLEMENTATION.
METHOD CONSTRUCTOR.
super->constructor( EXPORTING maxSeats = maxSeats
maxKidSeats = maxKidSeats ).
""// me->maxSeats and me->maxKidSeats are now inherited (public) instance variables from the super class.
ENDMETHOD.
你也可以从 ZMP_ACAR
中完全删除构造函数并将其放入 Z30082019_BMWCAR
中。不太优雅,但它会工作。
class ZMP_ACAR definition
PUBLIC
ABSTRACT
create public .
public section.
DATA: maxSeats TYPE i,
maxKidSeats TYPE i,
carKidSeats TYPE TABLE OF REF TO z280819_kidseat,
carPeople TYPE TABLE OF REF TO z280819_person.
METHODS goToTrip ABSTRACT.
protected section.
private section.
ENDCLASS.
CLASS ZMP_ACAR IMPLEMENTATION.
ENDCLASS.
class Z30082019_BMWCAR definition
public
inheriting from ZMP_ACAR
final
create public .
public section.
METHODS CONSTRUCTOR
IMPORTING maxSeats TYPE i
maxKidSeats TYPE i.
METHODS addKidSeatToCar REDEFINITION.
METHODS goToTrip REDEFINITION.
protected section.
private section.
ENDCLASS.
CLASS Z30082019_BMWCAR IMPLEMENTATION.
METHOD CONSTRUCTOR.
super->constructor( ).
me->maxSeats = maxSeats.
me->maxKidSeats = maxKidSeats.
ENDMETHOD.
METHOD goToTrip.
...
ENDMETHOD.
ENDCLASS.
这是我的抽象超类:
class ZMP_ACAR definition
PUBLIC
ABSTRACT
create public .
public section.
DATA: maxSeats TYPE i,
maxKidSeats TYPE i,
carKidSeats TYPE TABLE OF REF TO z280819_kidseat,
carPeople TYPE TABLE OF REF TO z280819_person.
METHODS CONSTRUCTOR
IMPORTING maxSeats TYPE i
maxKidSeats TYPE i.
METHODS goToTrip ABSTRACT.
protected section.
private section.
ENDCLASS.
CLASS ZMP_ACAR IMPLEMENTATION.
METHOD CONSTRUCTOR.
me->maxSeats = maxSeats.
me->maxKidSeats = maxKidSeats.
ENDMETHOD.
ENDMETHOD.
ENDCLASS.
这是我继承自上面抽象超类的子类
class Z30082019_BMWCAR definition
public
inheriting from ZMP_ACAR
final
create public .
public section.
METHODS CONSTRUCTOR
IMPORTING maxSeats TYPE i
maxKidSeats TYPE i.
METHODS addKidSeatToCar REDEFINITION.
METHODS goToTrip REDEFINITION.
protected section.
private section.
ENDCLASS.
CLASS Z30082019_BMWCAR IMPLEMENTATION.
METHOD CONSTRUCTOR.
super->constructor( ). "--> ERROR: No value was passed to the mandatory parameter "MAXSEATS".
me->maxSeats = maxSeats.
me->maxKidSeats = maxKidSeats.
ENDMETHOD.
METHOD goToTrip.
...
ENDMETHOD.
ENDCLASS.
它在 Z30082019_BMWCAR 的构造函数实现中抛出错误 - 行见上:
ERROR: No value was passed to the mandatory parameter "MAXSEATS"
.
你能告诉我问题是什么吗?
从基础 class (ZMP_ACAR
) 构造函数的签名可以看出,它有两个强制(非可选)导入参数。在实例化派生的 class (Z30082019_BMWCAR
) 时提供它们。将多个参数传递给函数时,ABAP 语法有点臃肿,但这应该有效:
CLASS Z30082019_BMWCAR IMPLEMENTATION.
METHOD CONSTRUCTOR.
super->constructor( EXPORTING maxSeats = maxSeats
maxKidSeats = maxKidSeats ).
""// me->maxSeats and me->maxKidSeats are now inherited (public) instance variables from the super class.
ENDMETHOD.
你也可以从 ZMP_ACAR
中完全删除构造函数并将其放入 Z30082019_BMWCAR
中。不太优雅,但它会工作。
class ZMP_ACAR definition
PUBLIC
ABSTRACT
create public .
public section.
DATA: maxSeats TYPE i,
maxKidSeats TYPE i,
carKidSeats TYPE TABLE OF REF TO z280819_kidseat,
carPeople TYPE TABLE OF REF TO z280819_person.
METHODS goToTrip ABSTRACT.
protected section.
private section.
ENDCLASS.
CLASS ZMP_ACAR IMPLEMENTATION.
ENDCLASS.
class Z30082019_BMWCAR definition
public
inheriting from ZMP_ACAR
final
create public .
public section.
METHODS CONSTRUCTOR
IMPORTING maxSeats TYPE i
maxKidSeats TYPE i.
METHODS addKidSeatToCar REDEFINITION.
METHODS goToTrip REDEFINITION.
protected section.
private section.
ENDCLASS.
CLASS Z30082019_BMWCAR IMPLEMENTATION.
METHOD CONSTRUCTOR.
super->constructor( ).
me->maxSeats = maxSeats.
me->maxKidSeats = maxKidSeats.
ENDMETHOD.
METHOD goToTrip.
...
ENDMETHOD.
ENDCLASS.