If I have a class:
class A { public A() { } }
and another
class B extends A { public B() { } }
is there any way to get B.B() not to call A.A()?
B.B()
A.A()
There is absolutely no way to do this in Java; it would break the language specification.
JLS 12 Execution / 12.5 Creation of New Class Instances
Just before a reference to the newly created object is returned as the result, the indicated constructor is processed to initialize the new object using the following procedure: Assign the arguments for the constructor [...] If this constructor begins with an explicit constructor invocation of another constructor in the same class (using this), then [...] This constructor does not begin with an explicit constructor invocation of another constructor in the same class (using this). If this constructor is for a class other than Object, then this constructor will begin with an explicit or implicit invocation of a superclass constructor (using super). Execute the instance initializers and instance variable initializers for this class [...] Execute the rest of the body of this constructor [...]
Just before a reference to the newly created object is returned as the result, the indicated constructor is processed to initialize the new object using the following procedure:
this
Object
super
2.1m questions
2.1m answers
60 comments
57.0k users