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,
, которые предполагают, что вызов super для объекта Key на самом деле не вызывается для объекта Key.
Я смущен тем, как супер работает здесь, я думал, что это сделает его суперклассом ключа,
желтый, будет вызывать m2 ();. 1018 *