多态中的引用类型转换
2016-12-05 00:14
330 查看
向上类型转换(隐式/自动类型转换),是小类型到大类型的转换
向下类型转换(强制类型转换),是大类型到小类型的转换
值得注意的是向上类型转换是不存在风险的,例如将一个杯子里的说倒到水壶里,正常来讲这样是没有问题的,计算机会自动的帮我们执行向上类型的转换所以也被称为自动类型转换。
而向下类型转换是存在风险的,例如将水壶里的水倒到杯子里面,因为它可能会发生溢出,这种情况也被称为数据的溢出,这样是存在风险的。但是如果程序员愿意做这种事情,我们也可以强制计算机组做这种操作的。但是我们怎么样避免一些风险呢?这里我们就要用到instanceof运算符,来解决引用对象的类型问题,避免类型转换带来的安全性问题。
我们用代码体现一下
向下类型转换(强制类型转换),是大类型到小类型的转换
值得注意的是向上类型转换是不存在风险的,例如将一个杯子里的说倒到水壶里,正常来讲这样是没有问题的,计算机会自动的帮我们执行向上类型的转换所以也被称为自动类型转换。
而向下类型转换是存在风险的,例如将水壶里的水倒到杯子里面,因为它可能会发生溢出,这种情况也被称为数据的溢出,这样是存在风险的。但是如果程序员愿意做这种事情,我们也可以强制计算机组做这种操作的。但是我们怎么样避免一些风险呢?这里我们就要用到instanceof运算符,来解决引用对象的类型问题,避免类型转换带来的安全性问题。
我们用代码体现一下
class Animal {} class Dog extends Animal {} class Cat extends Animal {} class test{ public static void main(String[] args){ Dog dog = new Dog(); Animal animal = dog;//向上类型转换 自动类型转换 Dog dog2 = (Dog)animal; //但是如果我们把这个父类的引用转换成Cat类型的引用 Cat cat = (Cat)animal;//这里编译器没有检查出错误,但是在运行时会报错说没有办法将这个引用进行转换。 //这是我们就要用到instanceof运算符 //如果animal对象含有Cat类型的元素 就会返回一个true if(animal instanceof Cat){ Cat cat = (Cat)animal; }else{ System.out.println("无法进行类型转换"); } } }
相关文章推荐
- java学习日记——多态中的引用类型转换
- 多态中的引用类型转换(instancesof)
- 多态引用类型转换
- Java多态中的引用类型转换理解模型
- java多态中的引用类型转换
- More Effective C++----(1)指针与引用的区别 & (2)尽量使用C++风格的类型转换 & (3)不要对数组使用多态
- 多态中的引用类型转换
- Java知识(多态和引用类型转换)
- 多态、引用类型转换、抽象类、接口
- 多态中的引用类型转换
- Java学习笔记二十六:Java多态中的引用类型转换
- Java多态之引用类型转换
- Java中的多态,引用类型的转换
- 【慕课笔记】U4 多态 第2节 多态中的引用类型转换
- more effective c++ 第一章读书笔记: 指针,引用,c++类型转换,多态数组,默认构造函数
- Java多态中的引用类型转换
- More Effectvie C++笔记(一)--指针与引用区别,C++风格的类型转换
- 【引用】C#中的类型转换
- Java基础12 类型转换与多态
- 似曾相识?值类型与引用类型的区别及其转换