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

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

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

相关推荐
码农水水6 分钟前
腾讯Java面试被问:阻塞队列BlockingQueue的实现原理
java·后端·python·面试
superman超哥16 分钟前
仓颉类型别名的使用方法深度解析
c语言·开发语言·c++·python·仓颉
廋到被风吹走20 分钟前
【Spring】BeanPostProcessor详解
java·后端·spring
LFly_ice20 分钟前
Next-4-路由导航
开发语言·前端·javascript
bbq粉刷匠24 分钟前
二叉树中两个指定节点的最近公共祖先
java·算法
38242782730 分钟前
python :__call__方法
开发语言·python
ppo9231 分钟前
Spring Boot 集成 Kafka 3.9.0:部署、监控与消息发送教程
java·架构
是Yu欸33 分钟前
从Ascend C算子开发视角看CANN的“软硬协同”
c语言·开发语言·云原生·昇腾·ascend·cann·开放社区
黎雁·泠崖34 分钟前
C 语言字符串进阶:strcpy/strcat/strcmp 精讲
c语言·开发语言
JavaEdge.38 分钟前
IDEA卡死没反应的全部解决方案
java·ide·intellij-idea