继承中类型的转换

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 超类 )

将继承类的对象转换为继承类型的实例

为啥字典键被转换为继承的类类型?

关于继承中的强制类型转换

在 .NET 中使用隐式转换替代多重继承