If both House()
and House(name)
are called then why is not “Building” printed two times, but instead one time?
class Building { Building() { System.out.println("Buiding"); } Building(String name) { this(); System.out.println("Building: String Constructor" + name); } } class House extends Building { House() { System.out.println("House "); } House(String name) { this(); System.out.println("House: String Constructor" + name); } } public class Test { public static void main(String[] args) { new House(" OK"); } }
Output:
Buiding House House: String Constructor OK
Advertisement
Answer
House(String name)
calls this()
which is the same as House()
.
House()
implicitly calls super()
which is the same as Building()
.
You never call Building(String name)
.
House(String name)
could call super(name)
to do that.