(多态)向上和向下转型的注意

两个无继承关系的类,即使都继承同一父类Fruit,但是Apple和Banana毫无关联,所以不能苹果类对象不能转型为香蕉类,只有有继承关系的类,才能向上和向下转型。

程序代码实现如下:

java 复制代码
class Fruit{

}

class Apple extends Fruit{
    public void fun1(){
        System.out.println("红苹果");
    }
}


class Banana extends Fruit{
    public void show1(){
        System.out.println("绿香蕉");
    }
}

public class hahah {
    public static void main(String[] args) {
        Fruit f1 = new Apple();

//        f1.fun1();

//        Apple a1 = (Apple) f1;
//        a1.fun1();

        Banana a2 = (Banana) f1;
        a2.show1();



    }
}

语句没有报错,但是程序运行报错,结果如下:

或者报错ClassCastException(类型转化异常)

总结:两个没有直接继承关系的类,互相不能多态表示,更不能相互向上和向下转型。

相关推荐
星火开发设计2 小时前
枚举类 enum class:强类型枚举的优势
linux·开发语言·c++·学习·算法·知识
喜欢吃燃面7 小时前
Linux:环境变量
linux·开发语言·学习
徐徐同学7 小时前
cpolar为IT-Tools 解锁公网访问,远程开发再也不卡壳
java·开发语言·分布式
LawrenceLan7 小时前
Flutter 零基础入门(二十六):StatefulWidget 与状态更新 setState
开发语言·前端·flutter·dart
m0_748229997 小时前
Laravel8.X核心功能全解析
开发语言·数据库·php
qq_192779878 小时前
C++模块化编程指南
开发语言·c++·算法
Mr.朱鹏8 小时前
Nginx路由转发案例实战
java·运维·spring boot·nginx·spring·intellij-idea·jetty
代码村新手8 小时前
C++-String
开发语言·c++
qq_401700418 小时前
Qt 中文乱码的根源:QString::fromLocal8Bit 和 fromUtf8 区别在哪?
开发语言·qt