向上转型与向下转型
来源:互联网 发布:酷派cool1优化 编辑:程序博客网 时间:2024/05/22 03:38
向上转型,将子类型隐藏。就不能使用子类的特有方法了
比如 有一个抽象类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){…..}
0 0
- 向上转型与向下转型
- 向上转型与向下转型
- 向上转型与向下转型
- 向上转型 向下转型
- 向上转型、向下转型
- 向上转型,向下转型
- 向上转型、向下转型
- 向上转型向下转型
- Java向上转型与向下转型
- JAVA中的向上转型与向下转型
- Java向上转型与向下转型(good)
- Java向上转型与向下转型
- Java向上转型与向下转型
- 对象向上转型与向下转型
- JAVA中的向上转型与向下转型
- JAVA中的向上转型与向下转型
- java向上转型与向下转型
- JAVA中的向上转型与向下转型
- 考试系统总结
- c++学习篇之模版template
- POJ 1321 棋
- Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or d.......
- 关于公司技术部门的管理工作的注意事项
- 向上转型与向下转型
- C++中的文件路径表示技巧
- Canvas 项目经验整理 基础知识加总结
- SqlServer之基本增删改查(5)
- netty4.0.x源码分析—ChannelPipeline
- 进程控制 [fork() exec() wait() waitpid()]
- DeepLearnToolBox笔记
- linux iotop安装
- 完美解决Nginx 504 Gateway time-out 502 Bad Gateway