Vererbung



  • Moin!

    Habe heute eine Klausur in Java geschrieben und es quält mich da eine Kleinigkeit:

    Man hatte eine Superklasse Polynom; in dieser Superklasse unter anderem enthalten:

    - eine Instanzvariable 'koeffizienten' vom typ double[]
    - eine Instanzvariable 'grad' vom Typ int

    - ein Konstruktor, der folgendermassen auszusehen hatte:

    public Polynom(int n){
      this.grad = n;
      koeffizienten = new double[n+1];
    }
    

    Nun sollte man die Klasse EinsPolynom von Polynom ableiten.

    Darin ein Konstruktor, der den Konstruktor der Superklasse aufruft.
    Ferner sollte man die Variable koeffizienten _der Klasse EinsPolynom_ schrittweise durchlaufen und jede Stelle mit einer Eins belegen.

    Ich habe das dann so realisiert:

    public class EinsPolynom extends Polynom{
      public Polynom(int n){
        super(n);
      }
    
      for(Schrittweise durchlaufen)
        EinsPolynom.koeffinzienten[i] = 1.0;
    
    }
    

    Mir geht's um " EinsPolynom.koeffinzienten[i] = 1.0;". Ist das richtig so?



  • Denke nein: "EinsPolynom.koeffinzienten" greifft auf die statische Variable "koeffizienten", die in der Klasse "EinsPolynom" definiert ist, zu. Die Aufgabenstellung meint aber vermutlich etwas anderes (ich finde sie nicht so geschickt formuliert): man soll wohl die "koeffizienten" die "EinsPolynom" durch Vererbung erhalten hat modifizieren. Das wäre dann aber nur "koeffizienten[i] = ..." (ich geh mal davon aus, dass "koeffizienten" protected in der Superklasse sind).



  • JBeni schrieb:

    Denke nein: "EinsPolynom.koeffinzienten" greifft auf die statische Variable "koeffizienten", die in der Klasse "EinsPolynom" definiert ist, zu. Die Aufgabenstellung meint aber vermutlich etwas anderes (ich finde sie nicht so geschickt formuliert): man soll wohl die "koeffizienten" die "EinsPolynom" durch Vererbung erhalten hat modifizieren. Das wäre dann aber nur "koeffizienten[i] = ..." (ich geh mal davon aus, dass "koeffizienten" protected in der Superklasse sind).

    Die Aufgabenstellung ist praktisch wörtlich übernommen; die Variablen sind mit keinen Zugriffsrechten versehen.

    Was würde denn eigentlich super.koeffizienten[i] an der besagten Stelle bewirken?



  • Das super hat in diesem Fall keinen Einfluss. Es hätte einen Einfluss, wenn in "EinsPolynom" auch noch eine Variable "koeffizienten" definiert wäre, die die Variable der Superklasse verdeckt. Dann würde man mit super auf die Variable der Superklasse zugreiffen.



  • Denk da is noch n Fehler:

    public class EinsPolynom extends Polynom{
      public Polynom(int n){
        super(n);
    
        for(int i=0; i<koeffizienten.length; ++i)
          this.koeffinzienten[i] = 1.0;
      }
    
    }
    

    die for-schleife sollte in den Konstruktor rein, denn so alleine in der Klasse kann die ja nicht stehen.


Log in to reply