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

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

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

相关推荐
cike_y1 分钟前
Spring整合Mybatis:dao层
java·开发语言·数据库·spring·mybatis
小股虫2 分钟前
缓存攻防战:在增长中台设计一套高效且安全的缓存体系
java·分布式·安全·缓存·微服务·架构
小蒜学长3 分钟前
足球联赛管理系统(代码+数据库+LW)
java·数据库·spring boot·后端
松涛和鸣4 分钟前
45、无依赖信息查询系统(C语言+SQLite3+HTML)
c语言·开发语言·数据库·单片机·sqlite·html
tkevinjd7 分钟前
IO流3(字符流)
java
不吃香菜5678 分钟前
SpringBoot 与 SpringCloud用法和区别
java
feifeigo1238 分钟前
基于C#实现即时通讯工具
开发语言·c#
这是程序猿12 分钟前
基于java的SpringBoot框架医院药品管理系统
java·开发语言·spring boot·后端·spring·医院药品管理系统
yousuotu15 分钟前
基于Python实现水果新鲜度分类
开发语言·python·分类
tkevinjd16 分钟前
IO流4(小练习)
java·io流