上面标记的拿个不存在的实例域是啥意思,其他的我都能看懂
2条回答 默认 最新
- JavaTree2017 2017-08-05 07:17关注
子类的引用转换为超类的引用是不会出现问题的,属于向前转型
因为子类本身就属于超类,是is a的关系,但是调用staff[0] = new Employee(...) 的操作的时候,
实际上staff这个数组指向的是Manager的数组,而这个new只会将employee对象中的属性初始化,然而去调用manager[0]的时候,
我们知道manager[0]实际上不是Manager对象而是Employee对象,这个对象是没有setBonus这个方法的,但是因为我们使用的引用是manager,也就是第一行创建的Manager[]数组,这里就会发生向后转型
但是超类的集合是小于子类的集合的,导致超类部分已经被初始化,而子类部分没有被初始化,
因此调用超类没有的setBonus实际上是对Employee对象的调用,而这个对象根本没有这部分本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 如何通过代码传输视频到亚马逊平台
- ¥15 php查询mysql数据库并显示至下拉列表中
- ¥15 freertos下使用外部中断失效
- ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
- ¥15 devserver配置完 启动服务 无法访问static上的资源
- ¥15 解决websocket跟c#客户端通信
- ¥30 Python调用dll文件输出Nan重置dll状态
- ¥15 浮动div的高度控制问题。
- ¥66 换电脑后应用程序报错
- ¥50 array数据同步问题