Używanie słowa kluczowego „super” podczas uzyskiwania dostępu do nieokreślonych metod nadklasy
Usiłuję uzyskać zrozumienie dziedziczenia w Javie i nauczyłem się, że przy zastępowaniu metod (i ukrywaniu pól) w podklasach nadal można uzyskać do nich dostęp z super klasy, używając słowa kluczowego „super”.
Chcę wiedzieć, czy słowo kluczowe „super” powinno być używane w przypadku metod nie przesłanianych?
Czy jest jakaś różnica (w przypadku nie przesłanianych metod / nie ukrytych pól)?
Złożyłem przykład poniżej.
public class Vehicle {
private int tyreCost;
public Vehicle(int tyreCost) {
this.tyreCost = tyreCost;
}
public int getTyreCost() {
return tyreCost;
}
}
i
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;
}
}
W szczególności biorąc pod uwagę togetTyreCost()
nie został przesłonięty, powiniengetTotalTyreReplacementCost()
posługiwać sięgetTyreCost()
lubsuper.getTyreCost()
?
Zastanawiam się, czy super powinien być używany we wszystkich przypadkach, w których dostęp do pól lub metod nadklasy (aby pokazać w kodzie, do którego uzyskujesz dostęp do nadklasy), czy tylko w przesłoniętych / ukrytych (więc wyróżniają się).