我很难过。当运行客户端代码(见底部)时,我认为行super.testIt()应该产生“it”而不是“up”,因此将 upitit 作为正确的答案。我编写了它并运行它, upupit 是正确的答案。为什么超级方法调用会回到子方法?
public class V
{
public void one(){
System.out.print("it");
}
public void two(){
System.out.print("go");
}
public void testIt(){
one();
}
}
public class W extends V
{
public void one(){
System.out.print("up");
}
public void two(){
System.out.print("at");
}
public void testIt(){
one();
super.testIt();
super.one();
}
}
///////////////////////////////////////////////////////////////
//client code in the main of another class
W x = new W();
x.testIt();
答案 0 :(得分:1)
底层类是W.由于多态性,它将调用W的one()方法。