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ę).

questionAnswers(8)

yourAnswerToTheQuestion