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

两个无继承关系的类,即使都继承同一父类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(类型转化异常)

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

相关推荐
Java爱好狂.3 分钟前
Redis高级笔记:原理+集群+应用+拓展+源码
java·数据库·redis·spring·java面试·后端开发·java八股文
lee_curry7 分钟前
jvm中的内存模型
java·jvm·内存模型
lsx2024068 分钟前
SQL CREATE DATABASE
开发语言
tltwuyulw9 分钟前
Java的函数式编程(三)
java·后端
ch.ju9 分钟前
Java程序设计(第3版)第二章——嵌套循环
java
直奔標竿9 分钟前
Java开发者AI转型第九课!突破知识边界!企业级 RAG (检索增强生成) 核心架构与 ETL 管道初探
java·开发语言·人工智能·后端·spring
hhb_61811 分钟前
R语言数据分析与可视化实战指南
开发语言·数据分析·r语言
skilllite作者12 分钟前
SkillLite Rust 沙箱与 AI Agent 自进化实战指南
开发语言·人工智能·后端·架构·rust
我星期八休息12 分钟前
Linux 进程核心原理全解:从冯诺依曼体系到进程控制全链路深度剖析
大数据·linux·服务器·开发语言·数据结构·c++·散列表
QCzblack13 分钟前
php-ser-libs
android·开发语言·php