У меня есть вопрос о наследовании в Java.
У меня есть два класса A
и B
, и класс B, наследует от A:
public class A {
public A() {
System.out.println("Hi!");
}
}
public class B extends A {
public B() {
System.out.println("Bye!");
}
public static void main(String[] args) {
B b = new B();
}
}
Когда я запускаю программу B, вывод:
Hi!
Bye!
Вопрос : почему конструктор из class A
вызывается, когда я создаю объект class B
?
Я знаю, что B наследует все от A - все переменные экземпляра или класса и все методы, и в этом смысле объект B имеет все характеристики A плюс некоторые другие характеристики, определенные в B. Однако я не знал и не думал, что когда я создаю объект типа B, конструктор A также вызывается.
Итак, написание этого:
B b = new B();
создает Два объекта - один типа B и один типа A .
Становится интересно,
Может кто-нибудь объяснить, почему именно это происходит?