Використовуючи оператор
instanceof
, можна дізнатися, якого класу стався об'єкт. Цей оператор має два аргументи. Ліворуч вказується посилання на об'єкт, а праворуч - ім'я типу, на сумісність з яким перевіряється об'єкт. Наприклад:
Parent р = new Child(); // проверяем переменную р типа Parent
//на совместимость с типом Child print(p instanceof Child);
Результатом буде true . Отже, оператор instanceof
спирається не так на тип посилання, але в властивості об'єкта, який вона посилається. Але цей оператор повертає справжнє значення як для типу, від якого був породжений об'єкт. Додамо до вже оголошених класів ще один:
// Объявляем новый класс и наследуем
// его от класса Child
class ChildOfChild extends Child {}
Тепер заведемо змінну нового типу:
Parent p = new ChildOfChild();
print(p instanceof Child);
У першому рядку оголошується змінна типу Parent
, яка ініціалізується на об'єкт, породжений від ChildOfChild
. У другому рядку оператор instanceof
аналізує сумісність посилання типу Parent
з класом Child
, причому об'єкт, що задіяний, не породжений ні від першого, ні від другого класу. Проте оператор поверне true , оскільки клас, від якого цей об'єкт породжений, успадковується від Child
. Посилання на першоджерело: Operator instanceof
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ