با استفاده از عملگر
instanceof
، می توانید بفهمید که یک شی از کدام کلاس آمده است. این عملگر دو آرگومان دارد. در سمت چپ اشاره ای به شی و در سمت راست نام نوعی است که شی از نظر سازگاری با آن بررسی می شود. مثلا:
Parent р = new Child(); // проверяем переменную р типа Parent
//на совместимость с типом Child print(p instanceof Child);
نتیجه درست خواهد بود . بنابراین، اپراتور instanceof
به نوع مرجع تکیه نمی کند، بلکه به ویژگی های شی ای که به آن اشاره می کند، متکی است. اما این عملگر یک مقدار واقعی را نه تنها برای نوعی که شی از آن مشتق شده است، برمی گرداند. بیایید یک مورد دیگر را به کلاس های اعلام شده اضافه کنیم:
// Объявляем новый класс и наследуем
// его от класса Child
class ChildOfChild extends Child {}
حالا بیایید یک متغیر از نوع جدید ایجاد کنیم:
Parent p = new ChildOfChild();
print(p instanceof Child);
خط اول یک متغیر از نوع را اعلام می کند Parent
که با ارجاع به یک شی مشتق شده از مقداردهی اولیه می شود ChildOfChild
. در خط دوم، عبارت instanceof
سازگاری نوع مرجع Parent
با کلاس را تحلیل میکند Child
و شی درگیر از کلاس اول یا دوم مشتق نشده است. با این حال، عملگر true را برمی گرداند زیرا کلاسی که این شی از آن مشتق شده است، از آن به ارث می برد Child
. پیوند به منبع اصلی: Operator instanceof
GO TO FULL VERSION