Я предполагаю, что причина моего вывода - полиморфизм времени выполнения. Но я не могу понять, как?
Объясните, пожалуйста, как связаны полиморфизм, конструкторы и наследование во время выполнения.
Это код JAVA. У меня плохое понимание полиморфизма во время выполнения, но я не смог понять его.
пакет df;
класс А1 {
A1(){
System.out.println("Constructor A() called");
}
void m1() {
System.out.println("Inside A's m1 method");
}
}
класс B2 расширяет A1 {
B2(){
System.out.println("Constructor B() called");
}
void m1() {
System.out.println("Inside B's m1 method");
}
}
класс C3 расширяет A1 {
C3(){
System.out.println("Constructor C()");
}
void m1() {
System.out.println("Inside C's m1 method");
}
}
публичный класс Cldf {
// object of type A
public static void main(String[] args) {
A1 a = new B2();
}
}
Я ожидал результата, как показано ниже
Вызван конструктор B ().
но результат
Конструктор A () вызван
Конструктор B () называется