problem ze zrozumieniem jednej linijki

0

Cześć, uczę się programować. Znalazłem w sieci ciekawy kod:

public class wyjatki2 {
	public static void main(String[] args) throws CloneNotSupportedException {
       
		Programista czlek = new Programista();
		Programista klon = czlek;
		klon = (Programista)czlek.clone();
		klon.wiek=4;
		System.out.println("wiek czleka: "+czlek.wiek);
		System.out.println("wiek klona: "+klon.wiek);
	}
}

class Programista implements Cloneable{
	 @Override
	    public Object clone() throws CloneNotSupportedException {
	           return super.clone();
	    }	 
	int wiek = 10;
}

Nie potrafie zrozumieć o co dokładnie chodzi ze zwracaniem return super.clone(); w klasie Programista.

Za każdą pomoc bardzo dziękuję.

0

Super odnosi się do supertypu, czyli tutaj klasy Object. Jeżeli po definicji klasy nie ma słowa kluczowego extends to domyślnie przyjmuje się extends Object. Tutaj klasa programista rozszerza/ dziedziczy po klasie Object, więc super.clone() odnosi się do metody clone() z klasy Object. A co robi metoda clone() w klasie Object to już możesz wyczytać z dokumentacji.

0

Dzięki. Czyli gdyby nie było tego kluczowego słówka super., to wtedy nie idzie się odnieść do metody klasy Object. Tzn. jeśli będzie return clone(); to metoda będzie próbowała zwrócić siebie samą, dobrze myśle?

0

Generalnie tak.

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