• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

java中引用类型的强制转换

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");        }}我的疑惑是:明明都是强制转换,为什么有的会报异常,有的却可以正常进行?主要是异常的部分。
注:我能理解向上类型转换以及向下类型转换正常运行的代码,只是不理解那些异常的代码。
请大神讲解,感激不尽

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与3

强制类型转换的前提是,  对象本身的类型就是你要转换的类型,但是在java中,继承和多态的特性让我们在定义函数的参数和返回值的时候往往是定义其父类,比如说,什么肤色的人都能坐飞机,你在飞机上随机挑选一个乘客,你说这个乘客是黑人,这个命题事件成立的前提是这个人本身就是黑人,

使用道具 举报

强制类型转换的前提: 你明确知道这个类就是你要的那个类型,只不过被父类替代了.而如果你没有明确这个类是子类,你还要去强制类型转换,这个是不行的.

使用道具 举报

强制类型转换的前提: 你明确知道这个类就是你要的那个类型,只不过被父类替代了.而如果你没有明确这个类是子类,你还要去强制类型转换,这个是不行的.

使用道具 举报

发新帖

发布任务需求已有1031289位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!