Słowo kluczowe 'super' i 'this'

0

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

1

Tutaj o this
Super służy do wołania konstruktora z klasy nadrzędnej : super() - bez parametrów, lub z parametrami (jeśli są takie). Może tez wołać metodę z klasy rodzica: super.method(args*)
https://docs.oracle.com/javase/tutorial/java/IandI/super.html

0

Tak, wiem o tym wszystkim. Chodziło mi bardziej o to na jakim obiekcie wykonywane są metody przy użyciu słowa kluczowego 'super', ale chyba znalazłem już odpowiedź. Jeśli się mylę to przy wywołaniu metody super odwołuje się ona do klasy nadrzędnej, ale operacje nadal wykonywane są na tym samym obiekcie (tej samej instancji). Czyli nie tworzona jest nowa instancja,klasy nadrzędnej za pomocą której będziemy się odwoływali do metod klasy nadrzędnej. Dobrze myślę?

1 użytkowników online, w tym zalogowanych: 0, gości: 1