Witam wszystkich użytkowników. Chciałbym dogłębnie zrozumieć znaczenie słów kluczowych 'super' i 'this' używanych w Javie. Wiem, że super pozwala wywoływać metody z klasy nadrzędnej / wywoływać jej konstruktor, a this odwołuje się do zmiennych klasy w której jest wywoływany.
Niemniej jednak czym tak właściwie jest 'super' i 'this'? 'This' jest obiektem na rzecz którego wywoływana jest metoda/konstruktor? W takim razie czym jest 'super'?
public class Nadrzedna {
public void wypisz() {
System.out.println("Wypisz 1");
}
}
public class Podrzedna extends Nadrzedna {
public void wypisz() {
super.wypisz();
System.out.println("Wypisz 2");
}
public static void main(String[] args) {
Podrzedna test = new Podrzedna();
test.wypisz();
}
}
Spowoduje wypisanie: Wypisz 1 \n Wypisz 2, jest to dla mnie zrozumiałe. Mam jednak wątpliwości czym jest właściwie 'super'? Jest obiektem na rzecz którego wywoływana jest metoda z klasy nadrzędnej? Bo do wywołania metody niestatycznej potrzebny jest obiekt klasy na rzecz której wywoływana jest metoda (lub obiekt po którym klasa dziedziczy metodę).