转载自 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父类强制转换子类原则相关推荐

  1. java 父类强制转换为子类_[java]Java中父类强制转换成子类的原则

    Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用. 例: public class Test { public static void main(Str ...

  2. java 父类强制转换为子类_父类强制转换为子类

    java的强制类型转换 强制类型转换,又叫造型.分为基本数据类型和引用数据类型两种情况,这里探讨后者,即引用类型的强制类型转换. 对于引用类型来说,什么是强制类型转换呢?简单地说,就是把父类型转换为子 ...

  3. C#里氏转换,子类赋值父类,父类强制转换成子类的理解

    C#里氏转换,子类赋值父类,父类强制转换成子类的理解 最近在学习C#,在父类和子类的学习上有不理解的地方. Father f = new Son(); 这样的一个实例化程序中,内存时怎么样处理的,为什 ...

  4. JAVA父类引用指向子类的对象是什么意思?有什么作用?

    转自:http://zhidao.baidu.com/question/397089741.html JAVA父类引用指向子类的对象是什么意思?有什么作用? 给你举个简单的例子吧.类A,另外一个类B继 ...

  5. java中子类与父类强制转换_java中父类强制转换成子类的错觉

    引言:父类引用指向子类对象在java中十分常见,比如: Object object=new a();//a是一个类名 但是有时候我们看见子类引用指向了父类对象,就是上边的反过来,比如 图片中圈1标识的 ...

  6. java中父类强制转换成子类的错觉

    引言:父类引用指向子类对象在java中十分常见,比如: Object object=new a();//a是一个类名 但是有时候我们看见子类引用指向了父类对象,就是上边的反过来,比如 图片中圈1标识的 ...

  7. Java中父类强制转换为子类的可能

    之前徒弟问了一个问题, 在Java中, 父类对象到底能不能转换成对应的子类对象? 到底能不能, 今天就来说说这个问题, 先看下面一段代码: package cn.com.hanbinit.test; ...

  8. C#父类强制转换成子类,子类隐式转换成父类

    看你将父类引用到的是父类对象还是子类对象了. 比如Person类是Student的父类 那么可以将p直接强制转换为Student: Person p=new Student(); Student s= ...

  9. JAVA类型强制转换

    1.背景 在 Java 中,之所以需要强制类型转换是为了防止程序员在不知情的情况下把A类型数据错当成B类型的数据.将一种类型的值赋给另一个类型的变量是很常见的,如果这两种是兼容的,那么 Java 将执 ...

最新文章

  1. 运动目标跟踪__kalman
  2. 二次元会让人脸识别失效吗?
  3. 关于sqlserver和oracle的一点感受
  4. 车道检测源码分析系列
  5. Excel 技术篇-跨页签统计某一区域下符合条件值的数量方法,COUNTIF函数、数量统计公式的用法实例演示
  6. python批量处理jira上的issue
  7. fabric sdk php,基于 Fabric-SDK-Go 的Web项目实战之使用Fabric-SDK-Go满足依赖
  8. httplib 和 httplib2区别之 gzip解压
  9. Java线程池的工作原理与实现
  10. Django(part34)--一对多映射
  11. .NET 中安全高效跨平台的模板引擎 Fluid 使用文档
  12. 干货整理:处理不平衡数据的技巧总结!收好不谢
  13. 软考系统架构师笔记-最后知识点总结(五)
  14. 网络协议从入门到底层原理(8)HTTPS(成本、通信过程、TLS1.2的连接,配置服务器HTTPS)
  15. 使用WCF实现消息推送
  16. 139邮件服务器怎么设置,139手机邮箱的设置
  17. 基于百度翻译api的命令行翻译助手
  18. openmv实现二维码识别与串口发送
  19. homelede软路由设置方法_低成本组装一台LEDE软路由
  20. RecyclerView 条目很少时,onBindViewHolder没有被调用,导致item状态错乱

热门文章

  1. [mybatis]select_resultMap_自定义结果集映射规则
  2. [JavaWeb-Servlet]概述与快速入门
  3. [剑指offer]面试题22:栈的压入、弹出序列
  4. RNN循环神经网络概述
  5. ImportError: libicui18n.so.56 and/or libicui18n.so.58 when importing cv2
  6. E. Beautiful Subarrays(思维 01 trie 树)
  7. HDU - 7054 Yiwen with Formula 分治拆位FFT + dp + 费马小定理降幂
  8. AGC005D - ~K Perm Counting(组合数学,背包,dp)
  9. P4009 汽车加油行驶问题
  10. CF741C Arpa’s overnight party and Mehrdad’s si