加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用超类引用的java转换

发布时间:2020-12-14 19:16:51 所属栏目:Java 来源:网络整理
导读:有人能解释一下这里发生了什么吗? 假设Car和Bike是Vehicle的子类. 在我看来,像车辆v参考被投射到自行车.我知道这是非法的,事实上编译器吐出来汽车无法投入自行车. 但这不应该是车辆不能投到自行车?毕竟,Vehicle v是车辆参考. public class Test { public s

有人能解释一下这里发生了什么吗?

假设Car和Bike是Vehicle的子类.

在我看来,像车辆v参考被投射到自行车.我知道这是非法的,事实上编译器吐出来……汽车无法投入自行车.

但这不应该是车辆不能投到自行车?毕竟,Vehicle v是车辆参考.

public class Test {
   public static void main(String[] args) {
       Vehicle v = new Car();
       Bike b = (Bike) v;
       // some stuff
    }   
}
最佳答案
错误消息说Car,因为这是运行时异常.由于此时它知道Vehicle引用所指向的实际实例(Car,Bike或Vehicle),因此它提供了更具体的错误消息.

如果在编译时这是一个异常,编译器会提到Vehicle,因为编译器可能不知道Vehicle引用指向的实际实例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读