באמצעות האופרטור
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