Setter und Getter/Vererbung

luj1990

Neues Mitglied
Hallo zusammen,
ich bräuchte schnell eure Hilfe, ich schreibe morgen eine Prüfung über Java und habe soeben von einem kommilitonen die Klausur vom letzen Jahr geschickt bekommen und verstehe die letze Aufgabe nicht so ganz.
Also die Aufgabe 8. Ich habe die Original Lösungen vom Professor gleich mit hochgeladen.
Ich habe die Sachen die ich nicht verstehe rot markiert.

Vielen Dank vom Voraus.
 

Anhänge

  • Klausur.pdf
    83 KB · Aufrufe: 32
  • Lösungen.pdf
    92,8 KB · Aufrufe: 24

Dompteur

Top Contributor
Der Konstruktor von Student ruft zuerst den Konstruktor der Basisklasse (Mensch) auf. Dort werden die Instanzvariablen, die in der Klasse Mensch definiert sind, initialisiert.
In diesem Fall ist die Zeile:
Java:
super();
aber optional. Auch ohne diese Zeile, würde der Default-Konstruktor der Basisklasse aufgerufen werden.
Unbedingt nötig wäre das, wenn du mehrere Konstruktoren in der Basisklasse hast und einen bestimmten davon aufrufen willst.

In der "ausgabe()" Methode wird zuerst die "ausgabe()" Methode der Basisklasse aufgerufen und dann werden die beiden Instanzvariablen der Studentklasse ausgegeben. Du musst ja alle Instanzvariablem von Student ausgebene - auch die geerbten !
 

stg

Top Contributor
Oh man, in was für nem Kurs bist du denn da gelandet? :eek:

Auf das Wesentlich hat Dompteur dir ja schon geantwortet. Dem möchte ich aber noch hinzufügen:
In diesem Fall ist die Zeile:
Java:
super();
aber optional. Auch ohne diese Zeile, würde der Default-Konstruktor der Basisklasse aufgerufen werden.

Der Aufruf von super(); ist immer redundant. Nur wenn man einen anderen als den default-Konstruktor der Basisklasse aufrufen möchte, dann muss hier mit super gearbeitet werden. Aber super(); ohne Argumente kann man immer weglassen.

Zudem hast du den Aufruf der setter im Konstruktor angestrichen. Hier wird ein Student mit völlig aus der Luft gegriffenen Fantasie-Werten für die MatrikelNr und Jahr angelegt. Dazu gibt es (auch nach der Aufgabenstellung her) keinen Grund und es ist mMn einfach unschön. Wenn ich einen Standard-Konstruktor aufrufe, dann erwarte ich ein "sauberes" neues Objekt, welches allenfalls mit wirklich sinnvollen Standard-Werten befüllt ist. (Bspw das aktuelle Jahr, eine automatisch generierte Matrikelnummer o.Ä.)
Zudem ist der Aufruf der setter-Methoden im Konstruktor brandgefährlich. So einen Mist sollte man sich gar nicht erst angewöhnen. Wenn Methoden-Aufrufe im Konstruktor, dann möglichst nur Methoden die private oder final sind.

Insgesamt würde meine vollständige Lösung zu dieser Teilaufgabe so aussehen:
Java:
public Student() {};
 

stg

Top Contributor
Das betrifft nicht nur setter, sondern generell Methodenaufrufe im Konstruktor. Das Problem ist, dass die setter hier public sind, und damit von allen ableitenden Klassen problemlos überschrieben werden können. Damit hat man in der erbenden Klasse Zugriff auf this, bevor das Objekt vollständig initialisiert ist.

NetBeans z.B. schmeißt auch eine Warnung, wenn man etwas derartiges versucht.
 

stg

Top Contributor
Um auch mal ein Code-Beispiel zu liefern:

Java:
public class Child extends Parent {
  private Integer n;  
  public Child() {  
    setN(1);
    setI(1);
  }
  
  public void setN(int n) {  
    this.n=n;
  }
  
  @Override
  public void setI(int i) {  
    // do some validation in the setter
    if(n==null) {
      throw new RuntimeException("Es muss erst N gesetzt werden!");
    }
  }
  
  public static void main(String ... args) {
    Child c = new Child();
  }
}

class Parent {
  int i;
  public Parent() {  
    setI(1);
  }
  
  public void setI(int i) {  
    this.i = i;
  }
}

Wenn man so was vorfindet hat man doch richtig Spaß bei der Fehlersuche :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
W Getter/Setter Java Basics - Anfänger-Themen 4
KogoroMori21 Objektvariable anderer Klasse übernehmen, Getter/Setter Java Basics - Anfänger-Themen 11
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
KogoroMori21 Getter und Setter Java Basics - Anfänger-Themen 5
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
V getter/setter Garage Java Basics - Anfänger-Themen 12
S getter, setter in abstrakter Klasse oder lieber Unterklassen Java Basics - Anfänger-Themen 4
topi Kapselung getter und setter Java Basics - Anfänger-Themen 5
D Setter/Getter für Instanzvariablen praktisch? Java Basics - Anfänger-Themen 19
S Getter/Setter - Variablenklasse ? Java Basics - Anfänger-Themen 5
S getter and setter Java Basics - Anfänger-Themen 12
L Getter und Setter Java Basics - Anfänger-Themen 2
M Generics getter und setter Methoden Java Basics - Anfänger-Themen 4
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
L Klassen - Getter & Setter Methoden Java Basics - Anfänger-Themen 2
D Erste Schritte Java - Setter und Getter Java Basics - Anfänger-Themen 1
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
K Klassen Setter/Getter Java Basics - Anfänger-Themen 3
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
K Kapselung getter & setter Java Basics - Anfänger-Themen 11
J Frage zu Setter u. Getter Java Basics - Anfänger-Themen 7
T Variablen Getter-Setter vs Public Variable? Java Basics - Anfänger-Themen 5
Y Konstruktor - Setter/Getter Java Basics - Anfänger-Themen 3
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
K getter & setter Java Basics - Anfänger-Themen 6
C getter/setter Problem anscheinend Java Basics - Anfänger-Themen 13
G Erste Schritte Getter und Setter Java Basics - Anfänger-Themen 12
B Getter,Setter - Konstruktor überflüssig? Java Basics - Anfänger-Themen 26
N Sprite Methode (Getter, Setter, Konstruktor) Java Basics - Anfänger-Themen 9
S getter/setter aufrufen Java Basics - Anfänger-Themen 9
B Java getter/setter funktioniert nicht! Java Basics - Anfänger-Themen 7
X OOP Getter/Setter überschreiben den Wert ihrer Variablen nicht Java Basics - Anfänger-Themen 4
T Erste Schritte Verständnisfrage: Getter und Setter Methoden Java Basics - Anfänger-Themen 3
V public Variablen vs Getter + Setter Java Basics - Anfänger-Themen 4
F Getter und Setter Java Basics - Anfänger-Themen 4
lulas[]args getter/setter umstellung Java Basics - Anfänger-Themen 6
B Klassen Getter-Setter vor neuem Klassenaufruf - wie? Java Basics - Anfänger-Themen 20
N OOP Getter, Setter und andere Probleme Java Basics - Anfänger-Themen 8
A OOP Getter und Setter Java Basics - Anfänger-Themen 18
L Unterschied Konstruktor / Getter Setter Java Basics - Anfänger-Themen 13
L Setter und Getter für Arrays? Java Basics - Anfänger-Themen 4
N boolean bei Setter und getter methoden Java Basics - Anfänger-Themen 21
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
Houly Setter/Getter MEthoden testen Java Basics - Anfänger-Themen 4
P OOP Getter&Setter Methoden funktionieren nicht Java Basics - Anfänger-Themen 7
H Setter-und-Getter-Konvention Java Basics - Anfänger-Themen 8
V Reflection API - getter und setter Java Basics - Anfänger-Themen 7
-horn- EINE setter/getter klasse aus mehreren klassen befüllen Java Basics - Anfänger-Themen 13
C Getter/Setter Java Basics - Anfänger-Themen 61
H Frage zu getter und setter Java Basics - Anfänger-Themen 5
S Unbenutzte/überflüssige Getter/Setter herausfinden? Java Basics - Anfänger-Themen 2
M getter/setter bei JTextField ? Java Basics - Anfänger-Themen 21
G warum Setter/Getter Java Basics - Anfänger-Themen 25
S In einer Liste auf getter und setter zugreifen Java Basics - Anfänger-Themen 6
I If / Else in Setter? Java Basics - Anfänger-Themen 8
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
C Setter-Methode mit final-Attribut Java Basics - Anfänger-Themen 9
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
JavaTalksToMe Kapselung Setter Frage Java Basics - Anfänger-Themen 15
kilopack15 Ist diese setter-Methode richtig? Java Basics - Anfänger-Themen 2
T setter im Konstruktor einbauen? Java Basics - Anfänger-Themen 8
F Setter Java Basics - Anfänger-Themen 4
gamebreiti Problem mit Setter in Superklasse Verkettung der Kostruktoren??? Java Basics - Anfänger-Themen 7
N Setter funktioniert nicht Java Basics - Anfänger-Themen 6
M Methoden Problem bei Setter. Java Basics - Anfänger-Themen 2
S setter Java Basics - Anfänger-Themen 9
S Ein Attribut/Instanz eines bestehendes Objektes mit SETTER Methode ändern Java Basics - Anfänger-Themen 3
S Setter Methode von Boolean Java Basics - Anfänger-Themen 11
propra Gegenteil von Setter-Methoden Java Basics - Anfänger-Themen 30
T Setter Methode Wertebereich eingrenzen Java Basics - Anfänger-Themen 5
F Setter-Methode bei double-Array Java Basics - Anfänger-Themen 6
A Setter verschachteln? Java Basics - Anfänger-Themen 4
D Kapselung override Setter Java Basics - Anfänger-Themen 5
T Variablen fast identische Setter Java Basics - Anfänger-Themen 14
H OOP Setter im Konstruktor um code nicht zu wiederholen? Java Basics - Anfänger-Themen 2
N immer Setter-Methoden verwenden? Java Basics - Anfänger-Themen 54
U Problem mit setter Java Basics - Anfänger-Themen 17
S Setter bei Variablen Java Basics - Anfänger-Themen 6
R Enum und dann setter Setzen? Java Basics - Anfänger-Themen 44
G [Hibernate] Could not find a setter for property Java Basics - Anfänger-Themen 2
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
O Instanzattribut per Getter Methode zuweisbar, warum? Java Basics - Anfänger-Themen 8
P Klassenübergreifende Ausgabe mittels "getter" nicht möglich Java Basics - Anfänger-Themen 21
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
M Getter einer PriorityQueue Java Basics - Anfänger-Themen 1
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
V Getter Methode Java Basics - Anfänger-Themen 38
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
A getter Java Basics - Anfänger-Themen 3
T Getter für Array Java Basics - Anfänger-Themen 4
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
P getter Java Basics - Anfänger-Themen 1
M Getter Problematik mit ItemListener Java Basics - Anfänger-Themen 17

Ähnliche Java Themen

Neue Themen


Oben