CodeGym /Kursy /Składnia Java /Tworzenie obiektów

Tworzenie obiektów

Składnia Java
Poziom 2 , Lekcja 3
Dostępny
Tworzenie obiektów - 1

– Cześć, to znowu ja – twój ulubiony nauczyciel. Robisz tak wielkie postępy, że postanowiłem opowiedzieć Ci o obiektach i o tym, jak z nimi pracować.

Aby utworzyć obiekt, musisz wpisać słowo kluczowe „new”, a następnie nazwę typu (nazwę klasy). Załóżmy, na przykład, że mamy klasę o nazwie 'Kot':

Kod Opis
Kot kot;
Deklaruje zmienną kot będącą referencją do Kot. Zmienna kot ma wartość null.
new Kot();
Tworzy obiekt Kot.
Kot kot = new Kot();
Tworzy zmienną kot będącą referencją do Kot.
Tworzy nowy obiekt Kot. Przypisuje do zmiennej kot referencję do nowo utworzonego obiektu.
Kot kotek = new Kot(); Kot smoluch = new Kot();
Tworzone są dwa obiekty. Referencje do nich są przypisywane do dwóch różnych zmiennych.
Kot kotek = new Kot(); Kot smoluch = new Kot();

smoluch = kotek;
Tworzone są dwa obiekty. Referencje do nich są przypisywane do dwóch różnych zmiennych.

Następnie przypisujemy zmiennej smoluch wartość równą referencji do obiektu, do którego odwołuje się zmienna kotek. Obie zmienne odnoszą się teraz do pierwszego z utworzonych obiektów.
(Ponieważ do drugiego obiektu nie ma już nigdzie odniesienia, jest on teraz uważany za nieużytek)

Kot kotek = new Kot(); Kot smoluch = null;

smoluch = kotek;

kotek = null;
Tworzony jest jeden obiekt Kot i referencja do niego jest przypisywana do pierwszej zmiennej (kotek). Druga zmienna (smoluch) przechowuje pustą (null) referencję.

Obie zmienne odwołują się do tego samego obiektu.

Teraz tylko smoluch, ale nie kotek, odnosi się do obiektu.

– Co by się stało, gdybyśmy stworzyli obiekt i nie zapisali referencji do niego w żadnej zmiennej?

– Jeżeli po prostu utworzymy obiekt bez przypisywania go do zmiennej, maszyna Java utworzy go, a następnie zadeklaruje jako nieużytek/śmieć (obiekt nieużywany). Po chwili obiekt ten zostanie usunięty przez proces „odśmiecania” (garbage collection).

– Jak pozbywam się niepotrzebnego już obiektu?

– Nie robisz tego. Gdy tylko do obiektu nie odnosi się żadna zmienna, jest on oznaczany jako nieużytek i niszczony przez maszynę Java w następnym cyklu zbierania nieużytków/odśmiecania pamięci.

Tak długo, jak istnieje przynajmniej jedna referencja do obiektu, jest on uważany za aktywny i nie zostaje usunięty. Jeżeli chcesz pozbyć się obiektu wcześniej, możesz wyczyścić wszystkie referencje do niego, przypisując wartość null wszystkim zmiennym, które się do niego odwołują.

– Rozumiem. W porównaniu do kilku ostatnich lekcji wygląda to dość prosto.

– Diego nie spał całą noc, wymyślając dla Ciebie zadania. Robił to specjalnie z myślą o Tobie. Ma niezłe poczucie humoru, co?

Komentarze (9)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Andrzej Czapliński Poziom 4, Poland, Poland
6 lutego 2023
czasami jak patrzę na zadania zwlaszcza EPIC - dochodzi do mnie ze chyba jestem nieczytatym gamoniem ale potem dociera do mnie ze to zadanie wyprzedzajace i ze najwyzej zrobie je pozniej kiedy przerobie nastepny temat - generalnie podoba mi sie podejscie zmuszajce do szukania, kombinowania itp - wtedy radosc z ukonczonego kolejnego zadania jest znacznie wieksza :)
Walter Poziom 3, Lublin, Poland
3 grudnia 2022
dlaczego w zadaniach z wcześniejszych zadań jest wymagana znajomość tematów które dopiero się pojawią??
l.jargielo Poziom 0, Poland, Poland
11 grudnia 2022
Ponieważ ten kurs zakłada również poszerzanie swojej wiedzy z innych źródeł i szeroko pojęte samodzielne poszukiwanie rozwiązań, co jakoby ma uczyć nas samodzielności... Ja osobiście nie jestem fanem takiego podejścia, szczególnie na początku drogi. Choć rozumiem intencje, moim zdaniem nie ułatwia to nauki, bo temat nie jest wykładany kompleksowo na początku... Ale taką formułę ma kurs i trzeba ją zaakceptować ;)
NeoBTK Poziom 8, Katowice, Poland
26 sierpnia 2022
"Tak długo, jak istnieje przynajmniej jedna referencja do obiektu, jest on uważany za aktywny i nie zostaje usunięty." Zgodnie z artykułem "garbage collection" do którego jest link, bardziej liczy się to, czy obiekt jest osiągalny dla innych obiektów, idąc od początku wykonywania się kodu.
Rafał Drobnik Poziom 3, Poland, Poland
3 lutego 2022
Wg nie lepiej by było gdyby nie było Kot i kot tylko Pies i kot:) Łatwiej:)
Mateusz Poziom 3, Poland, Poland
17 grudnia 2021
Temat obiektów dopiero po tej lekcji zaczyna mi się rozjaśniać oraz nawiązanie do zmiennych w obiekcie :)
Joanna Poziom 9
27 grudnia 2020
Eehh, latwe zadania. Ale temat jest jeszcze troche dezorientujacy.
Damian Poziom 18, Lublin, Poland
4 grudnia 2020
Niepotrzebnie dodałem kropkę na końcu i dupa xD
aniloraq2 Poziom 3, Chojnice, Poland
28 stycznia 2023
xD