• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Działanie wywołań this() oraz super() w jednej klasie.

Object Storage Arubacloud
0 głosów
204 wizyt
pytanie zadane 23 sierpnia 2017 w Java przez Kubs Mądrala (5,190 p.)

Witajcie,

jak dokładnie działają (co wykonują) wywołania this() oraz super() w tej klasie?

 

Mój tok rozumowania wygląda tak - konstruktor z wywołaniem super("Mini") przekazuje do konstruktora klasy bazowej Samochód argument "Mini"......ale co dalej? I jak się to ma do wywołania this (Color.red) ?

 


class Mini extends Samochod {

Color kolor;

public Mini () {

this(Color.red);

}

public Mini (Color k) {

super ("Mini");
kolor = k;

//dalsza inicjalizacja

}

 

 

 

 

2 odpowiedzi

+2 głosów
odpowiedź 23 sierpnia 2017 przez Assasz Nałogowiec (30,460 p.)
This odnosi się do aktualnej klasy, a super do nadrzędnej. W Twoim przypadku wygląda to tak:

Masz dwa konstruktory, jeden z parametrem i jeden bez. W przypadku wywołania konstruktora bez parametru zostaje wywołany wewnątrz niego drugi konstruktor, któremu przekazujesz jakąś wartość domyślną (this() odnosi się bezpośrednio do konstruktora aktualnej klasy). Z kolei drugi konstruktor wywołuje konstruktor klasy nadrzędnej poprzez właśnie super i przekazuje do niego parametr.
komentarz 23 sierpnia 2017 przez Kubs Mądrala (5,190 p.)

Dziękuje,

dopytam tylko ..ten argument Color.red  jest przekazany do wywolania super poprzez argument "Mini" ? ..ktory to argument potem przekazany jest do nadklasy Samochod?

1
komentarz 23 sierpnia 2017 przez Assasz Nałogowiec (30,460 p.)
Szczerze powiedziawszy to ten argument Color.red jest chyba źle przekazany - wygląda jak metoda statyczna klasy Color lub metoda obiektu Color, a takiego nigdzie nie ma.

public Mini(Color k) przyjmuje jako argument obiekt klasy Color, który potem ustawia jego wartość w polu klasy o nazwie kolor. Do konstruktora nadrzędnego jest przekazywany jedynie string "Mini".
komentarz 23 sierpnia 2017 przez Kubs Mądrala (5,190 p.)
Dzięki Assasz.

Spisałem ten przykład z książki (może podczas tłumaczenia coś źle poszło ). Trochę już się naczytałem tego o Javie i myślę sobie o jakichś pierwszych prostych ćwiczeniach/aplikacji. Masz może coś ciekawego do polecenia?

Ps. myślę bardziej o zadaniach w Android Studio, to też Java...
komentarz 23 sierpnia 2017 przez Assasz Nałogowiec (30,460 p.)
Sam w Javie nie siedzę, więc raczej nie mam nic ciekawego do polecenia. Jeśli interesują Cię aplikacje mobilne, to może być Android Studio, lecz najpierw dobrze poznaj sam język i programowanie obiektowe, bo możesz się tam na początku pogubić.
komentarz 23 sierpnia 2017 przez Kubs Mądrala (5,190 p.)
Zgadzam się z Tobą. Po prostu czuję, że czytając już drugą książkę o Javie NAWET powinienem już zacząć 'kulawą' praktykę :) bo treści czytane kilka tygodni temu ulatują z pamięci wiec wydaje się, że czas je wdrażać w działanie :)

A jaką Ty masz/miałeś metodę nauki?
komentarz 23 sierpnia 2017 przez Assasz Nałogowiec (30,460 p.)
Praktyka.

Nie ma sensu czytanie samych książek, po prostu trzeba programować. Osobiście piszę w PHP i praktycznie cały czas wykonuję jakiś prywatny projekt, a w razie problemów sięgam do dokumentacji bądź forum. Od czasu do czasu zdarza się przeczytać jakiś artykuł, obejrzeć filmik na YT... ale to tylko dodatki, jeśli nie szlifujesz swojej wiedzy w praktyce, to ona szybko uleci.
komentarz 23 sierpnia 2017 przez Kubs Mądrala (5,190 p.)
Złote słowa.

Dodam tylko, że natknąłem się ostatnio na kod 'zoom', który niestety przybliża tylko w/od środka i nigdzie (łącznie z forami) nie mogę znaleźć odpowiedzi jak go zmienić na taki, który przybliżał będzie boki/rogi/góra/dół :) ..a przybliżanie i oddalanie ekranu to przecież taka normalna część większości aplikacji.
0 głosów
odpowiedź 25 sierpnia 2017 przez hiimJockiee Użytkownik (870 p.)
Cześć.

Wersja słowa kluczowego this - this() odwołuje się do innego konstruktora klasy bieżącej, niż tego w którym tą instrukcję wywołujesz.

Wersja słowa kluczowego super - super() odwołuje się do konstruktora klasy bazowej względem obecnej klasy, w której wywołujesz tą instrukcję. Konstruowanie obiektów klasy pochodnej rozpoczyna się zgodnie z łańcuchem dziedziczenia: klasa bazowa -> klasa pochodna.

Zarówno this() jak i super() muszą być pierwszą instrukcją w danym konstruktorze i z tego też względu muszą być unikalne w danym konstruktorze.

GjM
komentarz 17 września 2017 przez Kubs Mądrala (5,190 p.)
Dziękuję Ci za odpowiedź.

Podobne pytania

0 głosów
1 odpowiedź 183 wizyt
pytanie zadane 8 marca 2017 w Java przez Kubs Mądrala (5,190 p.)
0 głosów
1 odpowiedź 127 wizyt
0 głosów
1 odpowiedź 279 wizyt

92,584 zapytań

141,434 odpowiedzi

319,670 komentarzy

61,967 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...