Java父类强制转换子类原则

简介: 近,微信群友在讨论子类父类的转换问题,其实不难,给大家用实例来说明一下就很明了了。我们知道Java中子类转换成父类是没有任何问题的,那父类可以转换成子类吗?来看下面这段程序:

最近,微信群友在讨论子类父类的转换问题,其实不难,给大家用实例来说明一下就很明了了。

我们知道Java中子类转换成父类是没有任何问题的,那父类可以转换成子类吗?

来看下面这段程序:

public class TestObjectConvert {
    public static void main(String[] args) {
        test1();
        test2();
    }
    private static void test1() {
        Fruit fruit1 = new Fruit();
        Apple apple1 = new Apple();
        apple1 = (Apple) fruit1; // java.lang.ClassCastException
    }
    private static void test2() {
        Fruit fruit1 = new Apple();
        Apple apple1 = new Apple();
        apple1 = (Apple) fruit1;
    }
    static class Fruit {
    }
    static class Apple extends Fruit {
    }
}

结果是:

test1:报类转异常;
test2:转换正常。

所以,想让父类强制转换成子类,不是没有可能,除非父类是子类构造出来的实例,不然是不能强转的。

为什么呢?

如上代码,如果父类实例出来的对象是Orange,Orange当然不能强制转成Apple,所以说父类只有该子类对应的实例才能强转。

相关文章
|
Java 编译器
【一步一步了解Java系列】:子类继承以及代码块的初始化
【一步一步了解Java系列】:子类继承以及代码块的初始化
288 3
|
缓存 Java 数据库
JAVA分布式CAP原则
JAVA分布式CAP原则
265 0
|
缓存 前端开发 Java
Java中的RESTful API原则
总结而言,遵循RESTful原则不仅能够提升API的互操作性,还便于维护和扩展,是构建现代Web服务的重要实践。通过精心设计的URI、利用HTTP协议特性以及采用成熟框架如Spring Boot,Java开发者能够高效地创建出既强大又易于使用的RESTful API。
201 0
|
Java 程序员 编译器
【Java】继承、super、final、子类构造方法
【Java】继承、super、final、子类构造方法
212 0
|
Java
java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题
本文探讨了在Java中,当父类的方法返回`this`对象或变量时,子类调用该方法的行为,以及`this`关键字在不同类中调用方法时的指向问题。
125 0
java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题
|
Java 编译器
JAVA中的夫类与子类
JAVA中的夫类与子类
403 3
|
存储 Java 开发者
Java编程实践:探索面向对象设计原则
【7月更文挑战第31天】在Java的世界中,面向对象设计(OOP)原则是构建健壮、可维护和可扩展软件的基石。本文将深入探讨这些核心原则,并通过实际代码示例揭示其应用之美。
165 0
|
监控 Java API
Java面试题:解释微服务架构的概念及其优缺点,讨论微服务拆分的原则。
Java面试题:解释微服务架构的概念及其优缺点,讨论微服务拆分的原则。
284 0
|
Java 程序员
【Java探索之旅】继承概念_语法_父类的成员访问
【Java探索之旅】继承概念_语法_父类的成员访问
180 10
|
Java 关系型数据库 开发者
Java中的面向对象设计原则与实践
Java中的面向对象设计原则与实践