Um welche Art von Variable handelt es sich?
2 Antworten
Ich habe sicherheitshalber noch einmal in meiner Fachlektüre nachgeschaut und im Internet sorgfältig recherchiert.
Ein Konstruktor hat eine Parameterliste:
public Schulklasse(String kbz, String bgang, int anzahl) { … }
Die Variablen kbz, bgang und anzahl in den runden Klammern werden als Parameter bezeichnet.
Auch Methoden verfügen über eine Parameterliste, z. B.:
public void setInfo(String a, int b, boolean c) { … }
In der Methodendefinition werden die Parameter a, b und c angegeben.
Beim Aufruf von Methoden und Konstruktoren spricht man hingegen von Argumenten:
setInfo("Hallo", 12, true);
Schulklasse klasse = new Schulklasse("8b", "Gymnasium", 25);
Die Werte "Hallo", 12 und true sind die Argumente, die beim Aufrufen der Methode setInfo(String, int, boolean) an die jeweiligen Parameter a, b und c übergeben werden.
Bei den Werten "8b", "Gymnasium" und 25 handelt es sich ebenfalls um Argumente, die beim Aufrufen des Konstruktors Schulklasse(String, String, int) an dessen Parameter kbz, bgang und anzahl übergeben werden.
klassenbezeichnung, bildungsgang und anzahl_schueler sind Klassenvariablen bzw. Instanzvariablen. Diesen werden im Konstruktor die Werte der Parametervariablen kbz, bgang und anzahl zugewiesen.
Beachte aber, dass die Begriffe Parameter und Argument allerdings häufig synonym benutzt werden.
Siehe dazu:
Bei den oberen drei Variablen
private String klassenbezeichnung;
private String bildungsgang;
private int anzahl _schueler;
handelt es sich um Instanzvariablen (Objektvariablen).
Bei den unteren drei Variablen
String kbz, String bgang, int anzahl
handelt es sich um Parameter.
Im Konstruktor werden die Instanzvariablen anhand der Parameter gesetzt.
Die Bezeichnung Parameter passt für beide Fälle. Allerdings unterscheidet man zwischen formalen Parametern (das sind die Parameter in der Definition des Methodenkopfs) und tatsächlichen Parametern (Argumente; werden bei Aufruf der Methode übergeben).
Die eigentlichen Werte werden aber ja als Argumente übergeben
Das die übergebenen Werte etwas anderes sind, als die Variablen, die die Werte empfangen, wird von mir nicht in Abrede gestellt (s.o., ich habe es explizit geschrieben). Es geht um den Begriff Parameter.
Er hat ja gesagt anhand den Parametern werden die Instanzvariablen gesetzt aber die Parameter des Konstruktors haben die Werte der Argumente die übergeben werden also werden die Instanzvariablen ja genau gesehen anhand der Argumente gesetzt und nicht anhand der Parameter des Konstruktors weil die ja nur die Argumente übernehmen
naah anhand der Argumente eher weil die Parameter sind ja nur Platzhalter und die Werte werden dann als Argumente gegeben