| Author |
Must subclass call constructor of super class
|
kranthi kumar Vaddireddy
Greenhorn
Joined: Sep 30, 2005
Posts: 14
|
|
Must subclass call constructor of super class always and initialize its variable? What is the exception?
|
"SCJP 1.4 Certified"
|
 |
Nico Van Brandt
Ranch Hand
Joined: Mar 31, 2011
Posts: 66
|
|
You have 2 options invoking super:
super();
--or--
super(parameter list);
Note: If a constructor does not explicitly invoke a superclass constructor, the Java compiler automatically inserts a call to the no-argument constructor of the superclass. If the super class does not have a no-argument constructor, you will get a compile-time error. Object does have such a constructor, so if Object is the only superclass, there is no problem.
|
Oracle Java SE6 Certified Programmer
Oracle Java EE5 Certified Web Component Developer
|
 |
Jesper de Jong
Java Cowboy
Bartender
Joined: Aug 16, 2005
Posts: 12953
|
|
You don't have to call a superclass constructor explicitly; it is not necessary to always have a super() or super(arguments) call in a subclass constructor. If you do not specify it, the compiler will automatically add a call to the no-arguments superclass constructor.
I don't like it when people add an explicit super() call (with no arguments), because it is superfluous:
If the superclass does not have a no-arguments constructor, then you must explicitly call super(arguments) in each subclass constructor.
|
Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
Scala Notes - My blog about Scala
|
 |
Campbell Ritchie
Sheriff
Joined: Oct 13, 2005
Posts: 32833
|
|
The details are in the Java™ Language Specification. But it is reluctant to open for me.
Simply: yes. You must initialise all the fields, so as to create your instance in a consistent state, ie fulfilling its class invariants. The only instance where you can get away without a super(...); call is if the superclass has an accessible no-arguments constructor. One must presume that constructor will put the superclass object into a consistent state.
I think the only state in which case it is good design not to initialise the fields in the superclass is when the superclass hasn't got any fields!
|
 |
 |
|
|
subject: Must subclass call constructor of super class
|
|
|