public class Magenta
{
public void m3()
{
System.out.println("Magenta 3");
m2();
}
public void m2()
{
System.out.println("Magenta 2");
}
}
public class Yellow extends Magenta
{
public void m1()
{
System.out.println("Yellow 1");
super.m2();
}
public void m2()
{
System.out.println("Yellow 2");
}
}
public class Key extends Yellow
{
public void m2()
{
System.out.println("Key 2");
}
}
为什么我构建一个Key对象(使用Yellow var1 = new Key();
)并调用m1();
时,它不打印Yellow1\nYellow2?
而是打印Yellow 1\nMagenta
2,这表明在Key对象上调用super方法实际上没有被调用。
对于super的工作原理,我感到困惑。我以为它会使它被解释为key的超类Yellow将调用m2()。