public class Example {
public static void main(String args[]){
Parent p = new Child();
p.m2();
}
}
class Parent{
void m1(){
System.out.println("Parent : m1");
m2();
}
void m2(){
System.out.println("Parent : m2");
}
}
class Child extends Parent{
void m1(){
super.m1();
System.out.println("Child : m1");
}
void m2(){
System.out.println("Child : m2");
m1();
}
}
此代码会导致 java.lang.StackOverflowError,因为当调用 Parent 类的 m1() 方法时,它会调用 m2() 方法,而 m2() 方法是子类的 m2() 方法,因此会导致 StackOverflowError。
应该在Parents m1() 方法中进行哪些更改,以便它调用Parent 的m2() 方法而不是Child 的m2() 方法?
最佳答案
做这样的事情:
class Parent{
void m1(){
System.out.println("Parent : m1");
m2impl();
}
private void m2impl() { /* whatever */ }
void m2(){
m2impl();
}
}
关于java - java中出现以下问题如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7666026/