17. januar 2010 - 20:56Der er
9 kommentarer og 1 løsning
Constructor til superclass kaldes ved instansoprettelse af subclass
Halløj,
Jeg er lige stødt på det mest besynderlige... Det kan selvfølgelig ske, at det er ganske naturligt, og at jeg er blevet lidt for træt, men se lige på følgende kode engang:
public class Main { public static void main(String[] args) { MySubclass mySubclass = new MySubclass(); } }
public class MyClass { private void MyPrivate() { System.out.println("MyPrivate"); } }
public class MySubclass extends MyClass { public MySubclass() { System.out.println("MySubclass"); } }
Ved kørsel får jeg følgende i konsollen:
MyClass MySubclass
Altså kaldes først constructor til Myclass og derefter MySubclass. Hvad pokker?
If a constructor body does not begin with an explicit constructor invocation and the constructor being declared is not part of the primordial class Object, then the constructor body is implicitly assumed by the compiler to begin with a superclass constructor invocation "super();", an invocation of the constructor of its direct superclass that takes no arguments.
Synes godt om
Slettet bruger
17. januar 2010 - 22:19#4
Tak :) Så hvordan undgår jeg evt. at overklassens constructor kaldes?
Det kan du ikke. Det er en helt fundamental egenskab at super klassens constructor skal kaldes. Ellers er objektet ikke i konsistent state.
Synes godt om
Slettet bruger
17. januar 2010 - 23:11#6
Godt så. Jeg kan kun undre mig over, hvorfor jeg mindes at have fået klart at vide, at overklassens constructor aktivt skal kaldes... Det må jeg lige tjekke. Smid et svar :)
Synes godt om
Slettet bruger
17. januar 2010 - 23:15#7
Invoking Superclass Constructors • Use super keyword in subclass constructor: public Manager(String aName) { super(aName); // calls superclass constructor bonus = 0; } • Call to super must be first statement in subclass constructor • If subclass constructor doesn't call super, superclass must have constructor without parameters
Så super() bruges udelukkende, når overklassens constructor kræver parametre - i hvilket tilfælde det er et krav?
Det var cirka det, jeg forsøgte at skrive. Men hjerne gik vist til ro for et par timers tid siden. Takker!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.