Пример ответа Иоахима:
class A {
A() { System.out.print("A()")};
A(Object o) { System.out.print("A(Object)")};
}
class B {
B() { super(); System.out.print("B()")};
B(Object o) { super(o); System.out.print("B(Object)")};
}
class C {
C() { super(); System.out.print("C()")};
C(Object o) { super(o); System.out.print("C(Object)")};
}
Теперь вызов:
C c = new C();
выдаст: A()B()C()
, а вызов:
C c = new C(new Object());
производить: A(Object)B(Object)C(Object)
.
Как видите, манипулируя вызовом super()
, вы можете вызвать явный родительский конструктор.