- 多态性带来了一个问题,就是如何判断一个变量所实际应用的对象的类型,C++使用runtime-type information(RTTI),java使用instranceof操作符。
- instanceof运算符用来判断一个变量所引用的对象的实际类型,是引用的对象的类型,不是变量的类型。
- 示例代码如下:
package j02_polymorphism;
public class j02_main_poly02 {
public static void main(String[] args) {
People peo = new People();
if(peo instanceof Object){
System.out.println("一个对象。");
}
if(peo instanceof People){
System.out.println("一个人。");
}
if(peo instanceof Teacher){
System.out.println("一位教师。");
}
if(peo instanceof preson){
System.out.println("领导。");
}
System.out.println("************************");
peo = new Teacher();
if(peo instanceof People){
System.out.println("people2 - teacher");
}
if(peo instanceof preson){
System.out.println("people2 - preson");
}
}
}
class People{};
class Teacher extends People{};
class preson extends Teacher{};