Hej.
Rozwiązania problemu mojego szukałem po różnych materiałach, ale wciąż nie moge zrozumieć. Mógłby ktoś wytłumaczyć to bardziej praktycznie?
Mianowicie nie rozumiem idei słówka "this" w Javie, a konkretnie wsadzania go do każdego konstruktora i gdzie sie tylko da. O ile zrozumienie zagadnień innych nie sprawia mi problemu to owe, ktoś mógłby powiedzieć trywialne (nie bijcie mnie za to), przyprawia mnie o nerwice. :D
To co ja rozumiem: Warto używać gdy przeciążone konstruktory różnią się jedynie listami argumentów, a wykonują dokładnie te same czynności, te same inicjalizacje. Więc wykorzystujemy aby nie powielać kodu i aby był bardziej zautomatyzowany i elastyczny. Wywołuje this(); żeby odwołać się do konstruktora, który dokończy tworzenie obiektu.
Ten przykład rozumiem jest dla mnie logiczny (z Headfirst):
class Mini extends Samochod{
Color kolor;
public Mini(){
this(Color.red); // konstruktor bezargumentowy okresla domyślny kolor i odwołuje się do kolejnego konstruktora za pomoca "this"
}
public Mini(Color k){
super("Mini");
kolor = k;
}
}
Natomiast tych 2 przykładów już nie. Nie rozumiem sensu użycia "this."
public class KlasaZKonstruktorami {
private int jakasLiczba;
public KlasaZKonstruktorami() {
this(10);
}
public KlasaZKonstruktorami(int jakasLiczba) {
this.jakasLiczba = jakasLiczba; // Nie rozumiem tego odwołania tutaj. Po co?
}
}
LUB
public class KotZKonstruktorami {
String imie;
public Kot() {
//konstruktor bezargumentowy
}
public Kot(String imie) {
this(); //tego tutaj tez nie rozumiem
this.imie = imie; //ooo i tutaj też
}
}