【发布时间】:2019-03-19 06:10:58
【问题描述】:
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();)和
call m1();,
为什么不打印Yellow1\nYellow2? 而是打印Yellow 1\nMagenta 2,
这表明对 Key 对象的 super 调用实际上并未在 Key 对象上调用。
我对 super 在这里的工作方式感到困惑,我认为它会被解释为 key 的超类,
这是黄色的,将调用 m2();。
【问题讨论】:
标签: java oop inheritance polymorphism super