Sto cercando di ottenere il blocco dell'ereditarietà in Java e ho imparato che quando si esegue l'override dei metodi (e nascondendo i campi) nelle sottoclassi, è ancora possibile accedervi da la super classe usando la parola chiave 'super'.Uso della parola chiave 'super' quando si accede a metodi di superclasse non sovrascritti
Quello che voglio sapere è se la parola chiave 'super' dovrebbe essere utilizzata per metodi non sovrascritti?
C'è qualche differenza (per metodi non sovrascritti/campi non nascosti)?
Ho messo insieme un esempio qui sotto.
public class Vehicle {
private int tyreCost;
public Vehicle(int tyreCost) {
this.tyreCost = tyreCost;
}
public int getTyreCost() {
return tyreCost;
}
}
e
public class Car extends Vehicle {
private int wheelCount;
public Vehicle(int tyreCost, int wheelCount) {
super(tyreCost);
this.wheelCount = wheelCount;
}
public int getTotalTyreReplacementCost() {
return getTyreCost() * wheelCount;
}
}
In particolare, dato che getTyreCost()
non è stato ignorato, dovrebbe getTotalTyreReplacementCost()
uso getTyreCost()
, o super.getTyreCost()
?
Mi chiedo se Super debba essere utilizzato in tutti i casi in cui si accede a campi o metodi della superclasse (per mostrare nel codice che si sta accedendo alla superclasse), o solo in quelli sovrascritti/nascosti (quindi spicca).
Buon posto (questo era solo un esempio che ho scritto come parte della domanda). I membri ora sono aggiornati e impostati come privati. – Jonny