Я хочу получить четкое представление о динамическом полиморфизме. Когда методы в дочернем классе перегружены и перегружены, я не могу определить вызовы методов.Динамический полиморфизм с параметризованными методами
Вот класс Родитель:
Родитель Класс:
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);
}
}
Я могу видеть вывод в консоли, но не могу понять причину вызовов метода.
Похож нечетным [Посетитель] (https://en.wikipedia.org/wiki/Visitor_pattern) мне. –
* «Когда методы в дочернем классе перегружены и перегружены, я не могу определить вызовы методов». * ... это никогда не должно быть так. Разрешение перегрузки в Java происходит во время компиляции, а не во время выполнения. Если компилятор может указать из вашего кода, какой метод вызывать, то вы тоже можете. – scottb