System.out.println ("тип с можно привести к типу А");
if(a instanceof С)
System.out.println ("тип а можно привести к типу С");
System.out.println();
// Cравнить производные типы
A ob;
ob = d; // Ссылка на d
System.out.println("ob теперь ссылается на d");
if(ob instanceof D)
System.out.println("ob теперь экземпляр класса D");
System.out.println();
ob = с; // Ссылка на с
System.out.println("ob теперь ссылается на с");
if(ob instanceof D)
System.out.println ("тип ob можно привести к типу D");
else
System.out.println("тип ob нельзя привести к типу D");
if(ob instanceof A)
System.out.println ("тип ob можно привести к типу А");
System.out.println();
// Все объекты можно привести к типу Object
if(a instanceof Object)
System.out.println("тип а можно привести к типу Object");
if(b instanceof Object)
System.out.println ("тип b'можно привести к типу Object");
if(с instanceof Object)
System.out.println ("тип с можно привести к типу Object");
if(d instanceof Object)
System.out.println("тип d можно привести к типу Object");
}
}
Вывод этой программы:
а это экземпляр класса A
b это экземпляр класса В
с это экземпляр класса'С
тип с можно привести к типу А
ob теперь ссылается на d
ob теперь экземпляр класса D
ob теперь ссылается на с
тип ob нельзя привести к типу D
тип ob можно привести к типу А
тип а можно привести к типу Object
тип b можно привести к типу Object
тип с можно привести к типу Object
тип d можно привести к типу Object
Операция instanceof не нужна для большинства программ, потому что, вообще-то, вы знаете тип объекта, с которым работаете. Однако она может быть очень полезна, когда вы пишете обобщенные подпрограммы, работающие на объектах из сложной иерархии классов.