Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 22017

Rzutowanie w Java

$
0
0

Temat rzutowania jest dla mnie oczywisty, jeśli chodzi o typy podstawowe. Np. rzutowanie z typu double do int (tracimy część ułamkową).

Natomiast pogubiłem się w przypadku rzutowania pomiędzy typami obiektów (nadklasy, podklasy itp.)

Przykład z książki, którą obecnie studiuję:

Manager boss = new Manager(...);  //tworzony jest boss typu kierownika

Employee[] staff = new Employee[3]; //tworzona jest tablica zespołu składającego się z trzech pracowników

staff[0] = boss;  //tutaj typ kierownika wkładam do pierwszej szufladki tablicy o typie pracownika (mogę, bo kierownik jest też jednocześnie pracownikiem

Zakładamy, że pozostałe dwie szufladki będą przechowywały obiekty typu pracownik (Emloyee).

No i teraz w dalszej części książki, przy okazji rzutowania:

Manager boss = (Manager) staff[1];   //Błąd

Manager boss = (Manager) staff[0]; //tak być może

Manager jest podklasą klasy Employee. Czemu więc to na czerwono jest błędne? W staff[1] trzymany jest obiekt typu Employee i samo staff[1] jest referencją do typu Employee. Nie można tak robić, bo pracownik nie może być zrzutowany na kierownika? Trochę tu się pogubiłem. Niby to potrafię opisać jak wyżej,ale nie czuję tego.

Tak samo jak z tym przykładem:

Date c = (Date) staff[1];


Viewing all articles
Browse latest Browse all 22017

Trending Articles