Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 11
  • 87

Mamy dwie zmienne:

 

SomeObject obj1;
SomeObject obj2;

 

Co będzie się znajdowało w zmiennej obj2, po wykonaniu poniższego kodu:

 

obj1 = new SomeObject();
obj2 = obj1;
Mateusz_Raszyk
  • Zapytał
  • @ Mateusz_Raszyk | 21.02.2015
    • laureat
    • 10
    • 1
    • 7

Odpowiedź (1)

  • 0

Tu sytuacja jest dość klarowna:

 

SomeObject obj1;   // deklaracja referencji
SomeObject obj2;   // deklaracja referencji

obj1 = new SomeObject();  // utworzenie obiektu
obj2 = obj1;              // przepisanie referencji

 

Pierwsze dwa wiersze to deklaracje referencji. W zależności od miejsca ich deklaracji mogą być one zainicjowane (wartością null - w przypadku atrybutów klasy) lub nie (w razie zadeklarowania ich jako zmiennych wewnątrz metody). Te referencje mogą posłużyć do wskazania obiektów typu SomeObject, ale póki co, niczego nie wskazują.

W kolejnym wierszu za pomocą konstruktora tworzymy na stercie nowy obiekt (typu SomeObject). Operator new zwraca referencję do tego obiektu i przechowujemy ją w zmiennej obj1. Dzięki temu obiekt staje się dla nas dostępny i możemy z niego korzystać.

Ostatnia instrukcja to przepisanie zawartości zmiennej obj1 (a więc referencji) do zmiennej obj2. Ta instrukcja nie tworzy nowego obiektu! W rezultacie do jednego obiektu możemy odwołać się zarówno poprzez referencję obj1, jak i obj2.

 

 

  • Odpowiedział
  • @ | 23.02.2015
  • TRENER MODERATOR ALTKOM AKADEMII