以下代码:
`
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?
答案 0 :(得分:0)
TL; DR:
使用this.
调用方法是没用的。需要使用super.
来调用方法以避免无限递归。
对于调用方法,this.foo()
和foo()
都做同样的事情:调用给定方法的派生版本最多。 (对于访问成员变量,情况有所不同)。 Java AFAIK中没有办法拨打#34;这个班级'方法的版本"。
super
通常用于重写方法的上下文中,以调用基类'该方法的实施。如果省略super.
,最终会调用自身的方法,并且可能会进行无限递归。如果您在任何其他上下文中使用super.method()
,则可能会搞乱您的类层次结构。