Daniel Thoma: Vererbung

Beitrag lesen

Hallo nihilfire,

Also ersteinmal ist es so, dass Du immer ein Konstruktor der Elternklasse aufgerufen wird. Wenn diese wie in Deinem fall keinen Konstruktor ohne Parameter hat, musst Du explizit einen mit Parametern aufrufen.

Da die Elternklasse bereits ein Array für die Daten enthält, sollte man auch dieses verwenden. Das Problem ist, dass dieses als private deklariert ist, Du da also keine Daten reichnschreiben kannst. Darin würde ich einen Designfehler sehen, entweder muss das Array als protected deklariert werden oder es sollte eine Methode existieren, die dir das schreiben des Arrays erlaubt.

Beispiel
class Register {

private short[] feld;
   private short index;

Register(short laenge){
     feld = new short[laenge];
     // Arrays mit Zahlen werden immer mit 0 initialisiert, das explizit zu tun, kann man sich also schenken;
   }

protected short[] getFeld() {
     return feld;
   }

}

class Schieberegister extends Register {

Schieberegister(short[] speicherRegister){
     super(speicherRegister.length);
     for (int i = 0; i < speicherRegister.length; i++) {
       if (speicherRegister[i] != 0 && speicherRegister[i] != 1) {
         return;
       }
     }
     System.arraycopy(speicherRegister, 0, getFeld(), 0, speicherRegister.length);
   }
}

Grüße

Daniel