我想对动态多态有一些清晰的了解。当子类中的方法被覆盖和重载时,我无法弄清楚方法调用。
这是父类:
家长班:
public class Parent {
void print(Parent parent){
System.out.println("I am parent classes only print method.");
}
}
儿童班:
public class Child extends Parent {
void print(Child child) {
System.out.println("I am child class' child print method.");
}
void print(Parent parent) {
System.out.println("I am Child class' parent print method ");
}
}
这是调用者类。
public class Caller {
public static void main(String[] args) {
Parent p = new Parent();
Child c = new Child();
Parent pc = new Child();
p.print(p);
p.print(c);
p.print(pc);
c.print(p);
c.print(c);
c.print(pc);
pc.print(p);
pc.print(c);
pc.print(pc);
}
}
我可以在控制台中看到输出,但无法理解方法调用背后的原因。