为什么cat 类不能被强制转换,求大哥哥大姐姐解释
这点有点懵,为什么可以转换Dog类 却不能转换Cat类? 为啥?
这点有点懵,为什么可以转换Dog类 却不能转换Cat类? 为啥?
2018-08-30
好比:杯子里面的水倒入水壶中,还是水
同上面一样
1、Dog dog=new Dog();//这个dog对象是Dog类型(类是对象的类型),对象里面的内容都是属于Dog类的
2、Animal animal=dog;//相当于---把杯子里面的水倒入空的水壶中,水壶中的内容还是水一样不会变成其他的东西;---这个是小类型向大类型转换,没有风险,看着他的类型范围大了,其实实际上包含的内容还是Dog类型中的内容
3、Dog dog=(Dog)animal;//相当于---把水壶里面的水倒入杯子中,还是水一样,这个是大类型向小类型转换,存在风险,水可能有溢处的风险;所以需要强制进行转换;如果还是有点不明白,可以看下double类型转换为int型的知识点,思路差不多~
*********
4、Cat cat=(Cat )animal;//仔细看第2步,animal对象的类型是Animal;但是animal对象指向的内容是Dog类型中的内容,与Cat没有关系,程序在编译的时候因为编译的是Cat类型,所以程序不会报错,但是程序运行的时候,运行的是Dog类型,所以会报错,Dog类与Cat类没有关系
举报