Za pomocą operatora
instanceof
można dowiedzieć się, z której klasy pochodzi obiekt. Operator ten ma dwa argumenty. Po lewej stronie znajduje się odniesienie do obiektu, a po prawej nazwa typu, z którym sprawdzana jest zgodność obiektu. Na przykład:
Parent р = new Child(); // проверяем переменную р типа Parent
//на совместимость с типом Child print(p instanceof Child);
Wynik będzie prawdziwy . Operator instanceof
nie opiera się zatem na typie odniesienia, ale na właściwościach obiektu, do którego się odnosi. Ale ten operator zwraca wartość prawdziwą nie tylko dla typu, z którego wyprowadzono obiekt. Dodajmy jeszcze jedną do już zadeklarowanych klas:
// Объявляем новый класс и наследуем
// его от класса Child
class ChildOfChild extends Child {}
Stwórzmy teraz zmienną nowego typu:
Parent p = new ChildOfChild();
print(p instanceof Child);
Pierwsza linia deklaruje zmienną typu Parent
, która jest inicjalizowana referencją do obiektu pochodzącego z ChildOfChild
. W drugiej linii instrukcja instanceof
analizuje zgodność odniesienia do typu Parent
z klasą Child
, a obiekt, którego dotyczy, nie pochodzi ani z pierwszej, ani z drugiej klasy. Operator zwróci jednak wartość true , ponieważ klasa, z której pochodzi ten obiekt, dziedziczy z Child
. Link do oryginalnego źródła: Instancja operatora
GO TO FULL VERSION