面向对象之多态--判断类型
来源:互联网 发布:手机管理淘宝商品 编辑:程序博客网 时间:2024/06/01 08:12
本文章只是了解
instanceof 关键字
上代码:
public class Hello {static void add(U u){u.show();//向下转型K k = (K)u;k.show();}public static void main(String args[]) {U u = new T();u.show();//调用静态方法add(传入U类或子类的对象)add(new T());}}class U{public void show(){System.out.println("U类的show方法");}}class T extends U{public void show(){System.out.println("T类重写的show方法");}}class K extends U{public void show(){System.out.println("K类重写的show方法");}}
结果:
由结果可知代码编译没问题,在运行出现了异常(错误):
我在静态方法add()中传入了一个T类型的引用,这样语法也没错误!因为T类继承了U类
不过在运行
K k = (K)u; 这句代码出现了错误!
因为刚才传入的是T类型的引用,T类又和K类又没存在关系,所以出现了类型转型失败!
怎么判断传入的引用呢? 在原代码中添加判断
public class Hello {static void add(U u){u.show();//判断传入的引用是否为K类型if(u instanceof K){//向下转型K k = (K)u;k.show();}else{System.out.println("u不为K类型");}}public static void main(String args[]) {U u = new T();u.show();//调用静态方法add(传入U类或子类的对象)add(new T());}}class U{public void show(){System.out.println("U类的show方法");}}class T extends U{public void show(){System.out.println("T类重写的show方法");}}class K extends U{public void show(){System.out.println("K类重写的show方法");}}
结果:
0 0
- 面向对象之多态--判断类型
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态
- 面向对象之多态学习
- php面向对象之多态
- JAVA-面向对象之多态
- C#面向对象之多态
- Java面向对象之多态
- js获取当前时间、日期
- Xcode生成模板文件
- 协变返回类型
- 物性参数库查询网站集合
- 虚拟机ifconfig只能得到lo,得不到eth0。ip地址为空
- 面向对象之多态--判断类型
- constraint用法总结 I
- C# 重启应用程序
- springmvc(三)---方法参数绑定
- Sqlserver 用户模式切换
- python27在windows环境安装talib的方法
- [VS2013]C++中调用Python脚本提示 error LNK2001: 无法解析的外部符号__imp_PyString_FromString等错误的解决方案
- jqgrid标题换行、隐藏滚动条、重新提交数据加载页面、单元格绑定点击事件
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析