Рассмотрим следующие классы кода.
public class A
{
public A()
{
callCreation();
}
protected void callCreation()
{
System.out.println("A Created!!");
}
}
public class B extends A
{
protected void callCreation()
{
System.out.println("B Created!!");
}
}
public class C extends B
{
protected void callCreation()
{
System.out.println("C Created!!");
}
public static void main(String[] args)
{
A a = new A();
A b = new B();
A c = new C();
}
}
Ниже приведен результат выполнения класса C.
A Created!!
B Created!!
C Created!!
Выводится первая строка вывода в выводе
A Created!!
потому что когда вызывается конструктор класса A, он неявно вызывает конструктор суперкласса (java.lang.Object) перед вызовом метода callCreation () в конструкторе класса A.И это будет иметь место и для классов B и C.В том случае, когда вызывается конструктор B, поток вызовов обычно должен быть следующим: конструктор B -> конструктор A -> конструктор java.lang.Object -> возвращается к методу callCreation () A, чтобы завершить вызов конструктора A.Если да, то как печатается переопределенное значение, а не значение суперкласса?Итак, вопрос в том, когда объект класса создается точно?Другими словами, объект класса должен быть создан только после того, как конструктор завершит вызов / инициализацию всех элементов внутри себя.Если да, то как можно вызвать метод из дочернего класса, а не из родительского класса?