向上转型与向下转型

向上转型,将子类型隐藏。就不能使用子类的特有方法了

比如 有一个抽象类Animal  有eat()方法,类Pig 继承了Animal,复写了eat()方法之外,还定义了自己独有的sleep()方法。
此时 如果 创建Pig的实例,并将类型向上转型为 Animal,将不能访问Pig类的sleep方法,而只能访问父类 Animal定义的方法。

那么如何让实际上是内容是 Pig类型的引用A 访问 Pig 类独有的方法呢,此时就需要向下转型

 

向下转型

Pig pig = Pig(A);
强制将A转化为Pig类型,这样就能访问A的sleep()方法了,(当然前提是A确实是一个Pig类型的实例)

如果 有个Dog 类也继承了Animal类,此时你讲一个Dog类的实例向下转型为Pig,

这将会在运行期而不是编译器报错,
报错的类型是 Pig cannot be cast to Dog  ,也就是类型转化出错了。

所以,向下转型时最好用到一个 关键字 instance

instanceof :用于判断对象的具体类型,只能用于引用数据类型判断,通常在向下转型前用于健壮性的判断。

比如 (A instanceof Pig){…..}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_22329521/article/details/46791405
个人分类: java基础
下一篇原型模式
想对作者说点什么? 我来说一句

java向上转型向下转型.doc

2011年09月13日 46KB 下载

java向上转型向下转型

2012年09月04日 19KB 下载

java课程资源第七章

2014年02月27日 263KB 下载

上转型对象体现多态

2016年04月16日 3KB 下载

使用java实现面向对象编程

2012年04月16日 115KB 下载

java课程资源第六章

2014年02月27日 237KB 下载

java 向下转型 程序

2012年11月21日 567B 下载

JAVA泛型总结

2013年05月09日 141KB 下载

JAVA的反射机制与动态代理.pdf

2011年11月22日 250KB 下载

没有更多推荐了,返回首页

关闭
关闭