public class TestPerson {

public static void main(String[] args) {

// 向上类型转换,正常运行

Animal a = new Cat();

a.show();

// 向下类型转换,正常运行

Animal cat = new Cat();

Cat cat2 = (Cat) cat;

cat2.show();

// 运行时异常

Cat cat3 = (Cat) new Animal();

cat3.show();

// 正常运行

Cat cat4 = (Cat) getAnimal(a);

cat4.show();

// 运行异常

Cat cat5 = (Cat) getAnimal();

cat4.show();

}

public static Animal getAnimal(Animal a) {

return a;

}

public static Animal getAnimal() {

return new Animal();

}

}

class Animal {

public void show() {

System.out.println("Animal");

}

}

class Cat extends Animal {

public void show() {

System.out.println("Cat");

}

}

我的疑惑是:明明都是强制转换,为什么有的会报异常,有的却可以正常进行?主要是异常的部分。

注:我能理解向上类型转换以及向下类型转换正常运行的代码,只是不理解那些异常的代码。

请大神讲解,感激不尽

引用类型的转换 java,java中引用类型的强制转换相关推荐

  1. C 语言中结构体强制转换--实验

    2019独角兽企业重金招聘Python工程师标准>>> 对于C语言中结构体强制转换做了如下实验, 或许可以解惑一些问题 对于结构体, 我理解的属性有: 成员的顺序, 成员的类型,成员 ...

  2. ssis 列转换_SSIS包中的行采样转换和百分比采样转换

    ssis 列转换 This article explores Row Sampling Transformations in SSIS and Percentage Sampling Transfor ...

  3. calendar类_带有时区的字符怎样转换为时间及Java 8中日期 与 Calendar 转换

    概述 Java 8 日期,时间常用操作及格式化. 重点怎么把时间戳转换为带有时区的时间字符串? 带有时区的字符串怎样转换为时间? Java 8中时间,日期 与Date, Calendar 怎样互转? ...

  4. Java开发中数据类型之间的转换

    1).简单类型数据间的转换,有两种方式:自动转换和强迫转换,通常产生在表达式中或方法的参数传递时. 自动转换 具体地讲,当1个较"小"数据与1个较"大"的数据1 ...

  5. java中为什么不能强制转换_为什么Java中的强制转换异常致命?

    根据this文章: In contrast to static type checking, dynamic type checking may cause a program to fail at ...

  6. java float强制转换int类型_float型怎样强制转换成int型

    展开全部 运行时所有数据都存储在内存中,32313133353236313431303231363533e4b893e5b19e31333436316236所以相同很正常,float转int会将小数后 ...

  7. php中int()强制转换,php下intval()和int强制转换使用的区别是什么

    php下intval()和int强制转换使用的区别是:1.[intval()]如果参数是字符串,则返回字符串中第一个不是数字的字符之前的数字串所代表的整数值:2.转换为int的PHP字符串,在使用之前 ...

  8. sql隐式转换_SQL Server中的隐式转换

    sql隐式转换 This article will provide an overview of SQL Server implicit conversion including data type ...

  9. C++中指针的强制转换

    转自:https://blog.csdn.net/u012273127/article/details/53260978 其又转自:http://blog.csdn.net/mhjcumt/artic ...

  10. 十进制转换成十六进制小程序(强制转换和移位运算符)

    涉及知识点:强制类型转换,移位运算符,十进制转换十六进制. 十进制数 60 转换成十六进制过程分析 60的二进制表示: 0000-0000  0000-0000  0000-0000  0011-11 ...

最新文章

  1. vim设置窗体大小的环境变量
  2. 迪米特法则 java_java设计模式--迪米特法则
  3. type=InnoDB ENGINE=InnoDB
  4. [LOJ#6068]. 「2017 山东一轮集训 Day4」棋盘[费用流]
  5. boost::safe_numerics模块实现测试自定义异常的测试程序
  6. python的六个类型_介绍Python中6个序列的内置类型
  7. Modify HTTP Headers (Examples)
  8. 苹果公布App审查新机制 禁止发布疫情相关娱乐程序和游戏
  9. 跨境电商为什么要用ERP系统?
  10. 连载三:RobotFramework+Selenium+Jenkins分布式构建
  11. win10系统迁移后系统重装_win7/win10系统迁移到新SSD硬盘的方法
  12. Cisco Live 2016:CEO罗卓克谈英国脱欧、内部孵化以及向服务转型
  13. 初识计算机网络||概述
  14. Android项目 moudle和library转换
  15. vue+flv.js实现视频播放
  16. Gibbs Sampling(吉布斯采样)
  17. 解决webstorm调试js时Evaluate脚本获取dom属性丢失问题
  18. 13个SpringBoot优秀学习项目
  19. 芯片IC附近为什么都放0.1uF的电容?这样做正确吗?有什么依据吗?
  20. 【Unity3D自学记录】 Unity3D游戏开发之键盘选取、切换目标

热门文章

  1. SAP 请求号单个传输方法
  2. SAP批次管理由物料级别转换到工厂级别的方法
  3. 如何用最短时间搞定酷炫可视化大屏?这款工具值得一看
  4. 链接oracle spatial,oracle spatial初试
  5. caliop 数据可视化_星载激光雷达CALIOP数据处理算法概述
  6. 灵宝机器人编程学校_灵宝两所学校上榜“河南省中小学人工智能教育实验学校”...
  7. sql server与java实例_Origin数据处理实例教程50节02040101
  8. dbda.class.php 下载,DBDA
  9. Python基础教程:属性值设置和判断变量是否存在
  10. python实现二叉堆中的大顶堆(大根堆)