Java多态中的引用类型转换

    xiaoxiao2021-04-18  54

    我们在写java程序的时候,经常对我们的引用类型进行转换。

    1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换 2.向下类型转换(强制类型转换),是大类型到小类型。 3.使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题

    // 创建一个子类对象 Dog dog = new Dog(); // 可以用一个父类的引用指向子类对象 Animal animal = dog; // 没有问题的(向上类型转换/自动类型提升) // 如果再次将父类引用转换成子类引用 Dog dog1 = animal; // 这样上存在风险的,编译器上不允许我们这样做的

    那我们怎么来解决这个问题呢?

    Dog dog1 = (Dog)animal; // 强制转换

    我们把这个就叫做“向下类型转换”或者叫“强制类型转换”。

    Cat cat = (Cat)animal; /* 1.强制转换为Cat类型,编译器不会报错 2.运行的时候会出错,因为真正的开辟的内存空间上Dog类型的,程序运行会发现2个类型不匹配,所以报错 */

    可以利用instanceof来规避这个问题:

    if(animal instanceof Cat){ Cat cat = (Cat)animal; }
    转载请注明原文地址: https://ju.6miu.com/read-674513.html

    最新回复(0)