Java:用于调用父类方法的约定/实践

时间:2016-09-21 19:33:14

标签: java subclass parent super

以下代码:

`

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

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

在B类中,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?

1 个答案:

答案 0 :(得分:0)

TL; DR:

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

对于调用方法,this.foo()foo()都做同样的事情:调用给定方法的派生版本最多。 (对于访问成员变量,情况有所不同)。 Java AFAIK中没有办法拨打#34;这个班级'方法的版本"。

super通常用于重写方法的上下文中,以调用基类'该方法的实施。如果省略super.,最终会调用自身的方法,并且可能会进行无限递归。如果您在任何其他上下文中使用super.method(),则可能会搞乱您的类层次结构。