Java中可以使用instanceof关键字判断一个对象到底是哪一个类的实例

格式:对象 instance 类  返回 boolean类型

通过子类实例化的对象同时是子类和父类的实例,无论是直接声明子类还是声明了父类,然后再通过子类向上转型

如果直接通过父类实例化本类对象,则一定不是子类的实例

//=================================================
// File Name : ploy_up_demo
//------------------------------------------------------------------------------
// Author : Common // 类名:C_1
// 属性:
// 方法:
class C_1{ // 定义接口C_1
public void fun1(){ //定义fun1()方法
System.out.println("C_1--->public void fun1");
} public void fun2(){ //定义fun2()方法
this.fun1();
}
} //类名:D_1
//属性:
//方法:
class D_1 extends C_1{ //子类D_1继承父类C_1
public void fun1(){
System.out.println("D_1--->public void fun1"); //覆写父类中的fun1()方法
} public void fun3(){
System.out.println("D_1--->public void fun3"); //子类自己定义方法
}
} //类名:E_1
//属性:
//方法:
class E_1 extends C_1{ //子类E_1继承父类C_1
public void fun1(){
System.out.println("E_1--->public void fun1"); //覆写父类中的fun1()方法
} public void fun5(){
System.out.println("E_1--->public void fun3"); //子类自己定义方法
}
} //主类
//Function : 对象的多态性,对象向上转型
public class ploy_up_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根
// D_1 b = new D_1(); //定义子类的实例化对象
// C_1 a = b; //声明一个父类,发生向上转型的关系,子类赋值给父类
// a.fun1(); //此方法被子类覆写过,虽然a是父类,但是调用的是子类的fun1()方法 // C_1 c = new D_1(); //声明一个父类,发生了向上转型,子类赋值给父类
// D_1 d = (D_1)c; //声明的父类强制转换成子类,发生了向下转型关系
// d.fun1();
// d.fun2();
// d.fun3(); // fun(new C_1()); //传递C_1类的实例,产生向上转型
// fun(new D_1()); //传递D_1类的实例,产生向上转型 C_1 a = new D_1(); //发生向上转型
System.out.println("C_1 a = new D_1():"+(a instanceof C_1));
System.out.println("C_1 a = new D_1():"+(a instanceof D_1)); C_1 a_1 = new C_1(); //声明一个父类
System.out.println("C_1 a = new C_1():"+(a_1 instanceof C_1));
System.out.println("C_1 a = new C_1():"+(a_1 instanceof D_1)); D_1 a_2 = new D_1(); //声明一个子类
System.out.println("D_1 a = new D_1():"+(a_2 instanceof C_1));
System.out.println("D_1 a = new D_1():"+(a_2 instanceof D_1));
} public static void fun(C_1 c){ //接收父类对象,不用写多次分别接收子类对象
c.fun1();
}
}

最新文章

  1. shadow Dom(shadowRoot) 访问
  2. 创建docker镜像,初始化jdk8与tomcat环境
  3. UVA 1646 Edge Case
  4. Java异常的深入研究与分析
  5. 【原创翻译】The Case for the Reduced Instruction Set Computer
  6. JVM性能监控与优化笔记(CPU)
  7. java实现小九机器人接口
  8. Usermod:user oracle is currently logged in 家目录不能改变解决方法
  9. Docker - Failed to connect to localhost port 4000: Connection refused
  10. 基于telegraf+influxdb+grafana进行postgresql数据库监控
  11. PHP全栈学习笔记16
  12. SQL Server分页存储过程通用存储过程
  13. Java 9 中的 9 个新特性你知道吗
  14. UVA1160 X-Plosives
  15. [持续交付实践] 开篇:持续集成&持续交付综述
  16. Redis单线程单进程为什么效率那么高
  17. ViewResolver和JSTL
  18. 一个最简单的通过WireShark破解SSL加密网络数据包的方法
  19. Base64编码——学习笔记
  20. LeetCode--125--验证回文串

热门文章

  1. 使用iframe标签结合springMvc做文件上传
  2. SpringMVC学习--数据回显
  3. T3 任职定级面试准备
  4. nginx启动、重启、关闭
  5. 在 ASP.NET 中执行 URL 重写的方法
  6. [转]为什么我要用 Node.js? 案例逐一介绍
  7. hdu4990 矩阵
  8. java.net.URL请求远程文件下载
  9. sublime text 如何设置”在浏览器浏览“的快捷键
  10. JACASCRIPT--的奇技技巧的44招