Ich bin gespannt, was passiert hinter den Kulissen, wenn Sie super()
verwenden, um einen Konstruktor der Superklasse aufzurufen. Wenn ein Objekt von der Unterklasse instanziiert wird, übernimmt die Unterklasse das Superklassenobjekt? oder wie funktioniert es?Was passiert hinter den Kulissen, wenn Sie super() verwenden
Hier ist mein Code als Referenz:
public class Bicycle {
//Declaring bicycles states
public int movSpeed = 0;
public int cadence = 0;
public int curGear = 0;
//Class constructor
public Bicycle(){
}
//Class constructor with params
public Bicycle(int movSpeed, int cadence, int curGear) {
this.movSpeed = movSpeed;
this.cadence = cadence;
this.curGear = curGear;
}
Unterklasse:
public class mountainBike extends Bicycle {
//Declare mountainBikes states
public int frontTravel = 0;
public int rearTravel = 0;
public int gearMult = 0;
//Class constructor
public mountainBike(){
}
//Class constructor with params
public mountainBike(int movSpeed, int cadence, int curGear, int frontTravel, int rearTravel,int gearMult){
super(movSpeed,cadence,curGear);
this.frontTravel = frontTravel;
this.rearTravel = rearTravel;
this.gearMult = gearMult;
}
Technisch ist dein 'mountainBike' (bitte benutze [UpperCamelCase] (https://en.wikipedia.org/wiki/CamelCase) für Klassen) ein' Bicycle', das 'super (args ...)' aufruft teilt Ihnen mit, dass ein bestimmter Konstruktor aufgerufen wird. Wenn Sie 'super()' nicht mit oder ohne Argumente aufrufen, wird der Standardkonstruktor aufgerufen. – Emz
Ich nehme an, Sie sind ziemlich neu in Java, also möchte ich auch auf [primitive Standardwerte] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) hinweisen, da gibt es keine Grund, den Wert von "frontTravel", "retrTravel" usw. auf "0" zu setzen, da dies automatisch erfolgt. – Emz
Überprüfen Sie _Head First Java_ als Referenz (9. Kapitel, ["Die Rolle von Superklassenkonstruktoren im Leben eines Objekts"] (http://tinyurl.com/usingSuper)). – Eugene