Java:Convention / 调用父 class 方法的练习

Java:Convention / practice for calling parent class methods

对于以下代码:

`

Class A
{
method1();
method2();
}

Class B extends A
{
method1();
method3();
}`

在ClassB中,method3实现如下:

method3()
{ 
this.method1(); // For calling method1 in class B
super.method1(); // For calling method1 in parent class A

// Following statements call method 2 in parent class
method2();      // 1 doesn't seem to be right practice
this.method2;   // 2 is more readable in case method2 is overridden in this class
super.method2();// 3 improves readability IMO
}

推荐调用方法 2 的 3 种方法中的哪一种?

长话短说:

this.调用方法没用。需要使用 super. 调用方法以避免无限递归。

对于调用方法,this.foo()foo() 都做同样的事情:调用给定方法的最派生版本。 (对于访问成员变量,情况有所不同)。 Java AFAIK 无法调用 "this class' version of a method".

super 通常用在覆盖方法的上下文中,以调用基础 class' 方法的实现。如果您省略 super. ,您最终会得到方法调用自身并且可能会无限递归。如果您在任何其他上下文中使用 super.method(),您可能已经弄乱了 class 层次结构。