四. Java继承和多态5. instanceof 运算符
多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 。 C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符。
instanceof 运算符用来判断一个变量所引用的对象的实际类型,注意是它引用的对象的类型,不是变量的类型。请看下面的代码:
- public final class Demo{
- public static void main(String[] args) {
- // 引用 People 类的实例
- People obj = new People();
- if(obj instanceof Object){
- System.out.println("我是一个对象");
- }
- if(obj instanceof People){
- System.out.println("我是人类");
- }
- if(obj instanceof Teacher){
- System.out.println("我是一名教师");
- }
- if(obj instanceof President){
- System.out.println("我是校长");
- }
- System.out.println("-----------"); // 分界线
- // 引用 Teacher 类的实例
- obj = new Teacher();
- if(obj instanceof Object){
- System.out.println("我是一个对象");
- }
- if(obj instanceof People){
- System.out.println("我是人类");
- }
- if(obj instanceof Teacher){
- System.out.println("我是一名教师");
- }
- if(obj instanceof President){
- System.out.println("我是校长");
- }
- }
- }
- class People{ }
- class Teacher extends People{ }
- class President extends Teacher www.feishenbo.cn { }
运行结果:
我是一个对象
我是人类
-----------
我是一个对象
我是人类
我是一名教师
可以看出,如果变量引用的是当前类或它的子类的实例,instanceof 返回 true,否则返回 false。
四. Java继承和多态5. instanceof 运算符的更多相关文章
- 四. Java继承和多态6. 多态对象的类型转换
这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常. ...
- 四. Java继承和多态8.Java final关键字:阻止继承和多态
在 Java 中,声明类.变量和方法时,可使用关键字 final 来修饰.final 所修饰的数据具有“终态”的特征,表示“最终的”意思.具体规定如下: final 修饰的类不能被继承. final ...
- 四. Java继承和多态4. 多态和动态绑定
在Java中,父类的变量可以引用父类的实例,也可以引用子类的实例. 请读者先看一段代码: public class Demo { public static void main(String[] ar ...
- 四. Java继承和多态10. Java Object类
Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: p ...
- 四. Java继承和多态3. 继承中的方法的覆盖和重载
在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类 ...
- 四. Java继承和多态1. 继承的概念与实现
继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似. 继承可以理解为一个类从另一个类获取方法和属性的过程.如果类B继承于类A,那么B就拥有A的方法和属性. ...
- 四. Java继承和多态9. 类与类之间的关系
类与类之间最常见的关系主要有三种:依赖(uses-a).聚合(has-a)和继承(is-a). 下面以在线书店订单系统为例,来详细的讲述这三种关系的概念. 在线书店订单系统的主要功能是:注册用户可以登 ...
- 四. Java继承和多态7. Java static关键字
static 修饰符能够与变量.方法一起使用,表示是“静态”的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态 ...
- 四. Java继承和多态2. Java super关键字
super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类 ...
随机推荐
- 易语言.开源(vip视频播放器源码)
下载链接:https://pan.baidu.com/s/1ta1Ig3LOiOka-kr5xB18kw
- Python——初识Python
本篇主要内容: • Python的特点 • Python的种类 • Python的编码 • Python的安装环境推荐 • Python的基础用法:输入输出,算术运算符,逻辑运算符,基本程序结构语法 ...
- shell之基本语法
转: read 命令从 stdin 获取输入并赋值给 PERSON 变量,最后在 stdout 上输出: #!/bin/bash # Script follows here: echo " ...
- 【Luogu】P3760异或和(权值树状数组)
题目链接 再次声明以后我见到位运算一定第一时间想把它拆成每一位算 本题就是有个前缀和sum[],然后让你求每一位有多少对i,j满足sum[i]-sum[j]在那一位上是1 考虑怎样才能减出1来 如果s ...
- session-cookie 和token登录验证
最近研究了下基于token的身份验证,并将这种机制整合在个人项目中.现在很多网站的认证方式都从传统的seesion+cookie转向token校验.对比传统的校验方式,token确实有更好的扩展性与安 ...
- 【HDU 2594 Simpsons' Hidden Talents】
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- 图表绘制工具--Matplotlib 3
''' [课程3.] 表格样式创建 表格视觉样式:Dataframe.style → 返回pandas.Styler对象的属性,具有格式化和显示Dataframe的有用方法 样式创建: ① Style ...
- 关于#include <bits/stdc++.h>
经常看人写#include <bits/stdc++.h>却不知道是干啥的? #include<bits/stdc++.h>包含了目前c++所包含的所有头文件 对比: #inc ...
- C# datatable to list
C# DataTable 和List之间相互转换的方法 好库文章 » 软件开发 » .NET » C# 发布者:好饱 发布日期:2013-1-27 22:17:49 更新日期:2013-1-27 ...
- zlib编译不过(Error A2070)解决方法(转)
原文转自 http://dearymz.blog.163.com/blog/static/2056574200871010027435/ 1.zlib是个很牛的东东,从http://www.zlib. ...