Initialisierung von Membern im Konstruktor oder bei der Deklaration



  • Gibt es eigentlich irgendeinen Unterschied, ob ich ein Member bei der Deklaration initialisiere, oder ob ich das im Konstruktor tue??

    Also Möglichkeit 1:

    class MyClass{
    private Vector myVector = new Vector();
    //...}
    

    oder Möglichkeit 2:

    class MyClass{
    private Vector myVector;
    public MyClass(){
       this.myVector = new Vector();
    }
    //...}
    

    Also ist es nur eine Stilfrage, oder gibt es da einen "technischen" Unterschied.



  • Es macht einen technischen Unterschied. Nur bei der Definition gleich einen Wert zuzuweisen ist eine Initialisierung. Die Wertzuweisung im Konstruktor ist eine simple Zuweisung.
    Die Initialisierung findet statt, bevor irgendein Konstruktor durchlaufen wird, auch bevor Konstruktoren der Basisklasse durchlaufen werden.
    Die Zuweisungen im Konstruktor finden immer nach der Initialisierung statt und dabei die Zuweisungen der Basisklassen zuerst.


Anmelden zum Antworten