Also, mal kurz zum Verständnis: ein Objekt besitzt Zustand und Verhalten (=> Attribute und Methoden). Davon zu unterscheiden ist die Klasse, die man sich als Vorlage für Objekte vorstellen kann.
Wird nun eine Instanz der Klasse erstellt, wird der Zustand des neu erstellten Objekts initialisiert. Auf diese Initialisierung kann über Konstruktoren Einfluss genommen werden. Jede Klasse besitzt wenigstens einen Konstruktor, wurde keiner im Code angegeben, ist dies der parameterlose Standardkonstruktor.
Das Beispiel von
@temi in Kommentar #12 zeigt die Klasse1, die über einen einzigen Konstruktor verfügt, der einen int-Parameter für das Gewicht erwartet. Zur Erzeugung eines Objekts der Klasse1 muss also ein Gewicht angegeben werden. Man muss sich klar machen, dass alle
Objekte dieser Klasse und aller Subklassen über das Attribut gewicht verfügen, man in den
Subklassen darauf aber nicht mehr (
direkt) zugreifen kann, weil gewicht private deklariert wurde. Außerhalb der Klasse1 kann via getGewicht() der Attributwert des Attributs gewicht ermittelt werden.
In Kommentar #16 von
@temi siehst Du die von Klasse1 abgeleitete Klasse2. Objekte der Klasse2 verfügen nach wie vor über das gewicht-Attribut, ein direkter Zugriff darauf ist jedoch nicht möglich. Natürlich kann man nach wie vor der Attributwert via getGewicht() ermitteln.
super(...) dient nun dazu, einen Konstruktor der Superklasse aufzurufen - im Kontext des aktuellen (bzw. gerade zu erzeugenden) Objekts. Wird ein neues Klasse2-Objekt erzeugt, wird
für dieses Objekt im Konstruktor der Klasse2 der Konstruktor der Klasse1 aufgerufen, der einen int-Wert erwartet. Dieser initialisiert dann das Gewicht. Übrigens: wird kein super(...) angegeben, wird automatisch der parameterlose Konstruktor der Superklasse aufgerufen.
Setze ich nun hiermit für die Klasse3 ein Gewicht?
Wenn Klasse3 (ich nehme mal an, dass damit GewichtigesWeinachtsObjekt gemeint ist) von Klasse1 abgeleitet ist, dann hast Du in Klasse3 keinen Zugriff auf this.gewicht (siehe Erklärung oben). Du willst das Gewicht aber nicht "setzen" (im Sinne von verändern), sondern initialisieren. Um das zu erreichen, verwendest Du einfach den Konstruktor der Superklasse und schreibst
super(gewicht);
.