📅  最后修改于: 2023-12-03 15:13:14.745000             🧑  作者: Mango
当我们需要在ABAP中对已有的方法进行修改时,可以使用覆盖方法(Redefined Method)的方式。通过覆盖方法,我们可以在不重写全新方法的情况下对已有方法进行修改。
我们可以通过在子类中声明与父类相同名称的方法,来覆盖(重写)父类的方法。只要子类重载了父类的方法,执行子类对象时就会执行子类的方法,而不是父类的方法。
CLASS lcl_parent DEFINITION.
PUBLIC SECTION.
METHODS: method1.
ENDCLASS.
CLASS lcl_child DEFINITION INHERITING FROM lcl_parent.
PUBLIC SECTION.
METHODS: method1 REDEFINITION.
ENDCLASS.
在上面的示例中,lcl_child
是 lcl_parent
的子类,子类中定义了一个名为 method1
的方法,并使用了 REDEFINITION
关键字。
当我们需要在覆盖的子类方法中调用父类的方法时,可以使用 SUPER->
这个关键字来实现。
CLASS lcl_parent DEFINITION.
PUBLIC SECTION.
METHODS: method1.
ENDCLASS.
CLASS lcl_child DEFINITION INHERITING FROM lcl_parent.
PUBLIC SECTION.
METHODS: method1 REDEFINITION.
ENDCLASS.
CLASS lcl_child IMPLEMENTATION.
METHOD method1.
WRITE: / 'This is Child Method'.
SUPER->METHOD1( ).
ENDMETHOD.
ENDCLASS.
在上面的示例中,我们在 lcl_child
中的覆盖方法 method1
中使用了 SUPER->METHOD1( )
来调用父类的方法。
覆盖方法是一种非常实用的方法,它可以让我们在不修改原有代码的情况下进行修改和扩展。在使用覆盖方法时,我们需要记住使用 SUPER->
来调用覆盖的父类方法。