Uso da palavra-chave 'super' ao acessar métodos de superclasse não sobrescritos
Eu estou tentando pegar o jeito de herança em Java e aprendi que, ao substituir métodos (e ocultando campos) em subclasses, eles ainda podem ser acessados da superclasse usando a palavra-chave 'super'.
O que eu quero saber é, deve a palavra-chave 'super' ser usada para métodos não-substituídos?
Existe alguma diferença (para métodos não substituídos / campos não ocultos)?
Eu coloquei um exemplo abaixo.
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;
}
}
Especificamente, dado quegetTyreCost()
não foi substituído, devegetTotalTyreReplacementCost()
usargetTyreCost()
ousuper.getTyreCost()
?
Eu estou querendo saber se o super deve ser usado em todas as instâncias onde os campos ou métodos da superclasse são acessados (para mostrar no código que você está acessando a superclasse), ou apenas nos sobrescritos / ocultos (então eles se destacam).