继承中类型的转换
Posted ★若风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承中类型的转换相关的知识,希望对你有一定的参考价值。
执行以下代码:
class Mammal{} class Dog extends Mammal {} class Cat extends Mammal{} public class TestCast { public static void main(String args[]) { Mammal m; Dog d=new Dog(); Cat c=new Cat(); m=d; d=m; d=(Dog)m; d=c; c=(Cat)m; } }
这个程序不能正常运行,因为在主函数里d=m;这句话不符合Java的规则,
在继承中,基类不能对子类的对象赋值,而子类可以对基类的对象赋值,
而且,非继承关系的两个类再赋值是也应该先进行强制转化,比如:d=c;,
强制转化也不是每次都可以成功的。可以使用instanceof运算符判断一个对
象是否可以转换为指定的类型,如果可以,则继续进行。
以上是关于继承中类型的转换的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin类的继承 ② ( 使用 is 运算符进行类型检测 | 使用 as 运算符进行类型转换 | 智能类型转换 | Any 超类 )
Kotlin类的继承 ② ( 使用 is 运算符进行类型检测 | 使用 as 运算符进行类型转换 | 智能类型转换 | Any 超类 )