博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java知多少(32)instanceof
阅读量:5267 次
发布时间:2019-06-14

本文共 1424 字,大约阅读时间需要 4 分钟。

多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 。 C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符。

instanceof 运算符用来判断一个变量所引用的对象的实际类型,注意是它引用的对象的类型,不是变量的类型。请看下面的代码:

1 public final class Demo{ 2     public static void main(String[] args) { 3         // 引用 People 类的实例 4         People obj = new People(); 5         if(obj instanceof Object){ 6             System.out.println("我是一个对象"); 7         } 8         if(obj instanceof People){ 9             System.out.println("我是人类");10         }11         if(obj instanceof Teacher){12             System.out.println("我是一名教师");13         }14         if(obj instanceof President){15             System.out.println("我是校长");16         }17         System.out.println("-----------");  // 分界线18        19         // 引用 Teacher 类的实例20         obj = new Teacher();21         if(obj instanceof Object){22             System.out.println("我是一个对象");23         }24         if(obj instanceof People){25             System.out.println("我是人类");26         }27         if(obj instanceof Teacher){28             System.out.println("我是一名教师");29         }30         if(obj instanceof President){31             System.out.println("我是校长");32         }33     }34 }35 class People{ }36 class Teacher extends People{ }37 class President extends Teacher{ }

运行结果:

我是一个对象
我是人类
-----------
我是一个对象
我是人类
我是一名教师
可以看出,如果变量引用的是当前类或它的子类的实例,instanceof 返回 true,否则返回 false。

系列文章:

转载于:https://www.cnblogs.com/Coda/p/4416166.html

你可能感兴趣的文章
如何在ScrollView中嵌套ListView
查看>>
委托和事件的简单实用
查看>>
面试题答案一
查看>>
arcgis 10.3 属性表乱码解决方案
查看>>
[转] Word2vec数学原理全家桶
查看>>
转:ArcGIS10.1正式版安装与破解
查看>>
国内代码托管
查看>>
sql进阶-筛选库表中数据为空的表
查看>>
ife task0003学习笔记(二):JavaScript原型
查看>>
SQL循环遍历,删除表里某一列是重复的数据,只保留一条。
查看>>
JAVA安装及环境变量配置
查看>>
WCF 第八章 安全 消息层安全
查看>>
WCF 第八章 安全 确定替代身份(下)-模仿用户
查看>>
ecshop 的transport.js 与jqueyr冲突
查看>>
css渲染(三)颜色与背景
查看>>
[ios] UIWebView的离线缓存【转】
查看>>
如何写复杂的SQL
查看>>
HNOI2002 营业额统计
查看>>
UE4之数组
查看>>
超分辨率的国内外研究现状
查看>>