Cześć, mam pytanie dotyczące przesłaniania metod podczas dziedziczenia klas. Kiedy metoda z klasy bazowej zostanie przesłonięta przez metodę z klasy pochodnej, to możemy użyć słowa kluczowego super, aby wywołać przesłoniętą metodę. Znalazłem taki przykładowy program na necie:
package test1;
import java.util.Scanner;
class Vehicle {
public void startEngine() {
System.out.println("Tekst z klasy Vehicle");
}
}
class Car extends Vehicle {
public void startEngine() {
super.startEngine();
System.out.println("Tekst z klasy Car");
}
}
public class Test1 {
public static void main(String[] args)
throws java.io.IOException{
Car ob1 = new Car();
ob1.startEngine();
}
}
Wynik działania programu jest następujący:
Tekst z klasy Vehicle
Tekst z klasy Car
I jak widać, po wywołaniu przesłoniętej metody za pomocą super, rzeczywiście została ona wywołana, ale niestety przy okazji została też wywołana metoda z klasy pochodnej, czyli pojawiły się dwa komunikaty. A da się zrobić tak, żeby żeby po wywołaniu metody za pomocą super, została wywołana tylko metoda z klasy bazowej, a nie jednocześnie pochodnej i bazowej? Czyli żeby w tym przypadku pojawił się jedynie komunikat "Tekst z klasy Car"?