Constructors and Inheritance (extends) ====================================== 1) a constructor may explicitly invoke the constructor of a super-class by using the special "super" syntax. 2) this statement must be the very *first* statement in the body of the constructor. 3) we may choose to pass on arguments as we like. e.g. (also see source code supplied) public B() { super(); ... } or public B() { super(17); ... } 4) if we do not use any "super(...)" statement explicitly, the compiler will insert the call "super()" as the first statement of the constructor for us. Therefore the following two are equivalent: public B() { super(); } and public B() { } 5) a subclass can only call constructors that are actually present in the superclass. Therefore the following DOES NOT work: public B() { super(1,2,3); } 6) data fields (also called data members) are initialised BEFORE the constructor is run (again see java code). 7) data fields that are not explicitly initialised will still have a "reasonable" value: e.g. 0 for ints, false for booleans, null for data-fields that hold references to objects (i.e. instances of some class) and so on (again see java code).