📜  abap 调用覆盖的父方法 (1)

📅  最后修改于: 2023-12-03 15:13:14.745000             🧑  作者: Mango

ABAP调用覆盖的父方法

当我们需要在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_childlcl_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-> 来调用覆盖的父类方法。