继承 - 抽象和最终方法和类
信息
METHODS 和 CLASS 语句的 ABSTRACT 和 FINAL 添加允许你定义抽象和最终方法或类。 **** ****
抽象方法在抽象类中定义,不能在该类中实现。相反,它是在类的子类中实现的。抽象类无法实例化。
最终方法不能在子类中重新定义。最终的类不能有子类。他们总结了一个继承树。
类实施:
CLASS lcl_abstract DEFINITION ABSTRACT.
PUBLIC SECTION.
METHODS: abstract_method ABSTRACT,
final_method FINAL
normal_method.
ENDCLASS.
CLASS lcl_abstract IMPLEMENTATION.
METHOD final_method.
"This method can't be redefined in child class!
ENDMETHOD.
METHOD normal_method.
"Some logic
ENDMETHOD.
"We can't implement abstract_method here!
ENDCLASS.
CLASS lcl_abap_class DEFINITION INHERITING FROM lcl_abstract.
PUBLIC SECTION.
METHODS: abstract_method REDEFINITION,
abap_class_method.
ENDCLASS.
CLASS lcl_abap_class IMPLEMENTATION.
METHOD abstract_method.
"Abstract method implementation
ENDMETHOD.
METHOD abap_class_method.
"Logic
ENDMETHOD.
ENDCLASS.
方法调用示例:
DATA lo_class TYPE REF TO lcl_abap_class.
CREATE OBJECT lo_class.
lo_class->abstract_method( ).
lo_class->normal_method( ).
lo_class->abap_class_method( ).
lo_class->final_method( ).