Sono curioso di sapere cosa succede realmente dietro le quinte quando usi super()
per chiamare un costruttore della super classe. Quando un oggetto viene istanziato dalla sottoclasse, la sub-classe eredita l'oggetto super-classe? O come funziona?Cosa succede dietro le quinte quando usi super()
Ecco il mio codice di riferimento:
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;
}
sottoclasse:
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;
}
Tecnicamente il tuo 'mountainBike' (si prega di usare [UpperCamelCase] (https://en.wikipedia.org/wiki/CamelCase) per le classi) è un' Bicycle', invocando 'super (args ...)' ti dice che è stato invocato un costruttore specifico. Se non invochi 'super()' con o senza argomenti verrà chiamato il costruttore predefinito. – Emz
Presumo che tu sia abbastanza nuovo in Java, quindi vorrei anche sottolineare [valori predefiniti primitivi] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html), non c'è vera ragione per impostare il valore di 'frontTravel',' rearTravel' ecc. a '0', poiché ciò avviene automaticamente. – Emz
Controllare _Head Primo Java_ come riferimento (9 ° capitolo, ["Il ruolo dei costruttori della superclasse nella vita di un oggetto"] (http://tinyurl.com/usingSuper)). – Eugene