Uso de la palabra clave 'super' al acceder a métodos de superclase no anulados
Estoy tratando de entender la herencia en Java y he aprendido que al anular métodos (y ocultar campos) en subclases, todavía se puede acceder a ellos desde la súper clase usando la palabra clave 'super'.
Lo que quiero saber es si la palabra clave 'super' se debe usar para métodos no sustituidos.
¿Hay alguna diferencia (para los métodos no sustituidos / campos no ocultos)?
He reunido un ejemplo a continuación.
public class Vehicle {
private int tyreCost;
public Vehicle(int tyreCost) {
this.tyreCost = tyreCost;
}
public int getTyreCost() {
return tyreCost;
}
}
y
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;
}
}
Específicamente, dado quegetTyreCost()
no ha sido anulado, deberíagetTotalTyreReplacementCost()
utilizargetTyreCost()
osuper.getTyreCost()
?
Me pregunto si debería usarse super en todas las instancias donde se accede a los campos o métodos de la superclase (para mostrar en el código que está accediendo a la superclase), o solo en los sobrescritos / ocultos (para que sobresalgan).