有关java覆盖和隐藏的疑问
反编译的结果仅能作为参考,而不能得出"JVM在调用非静态字段的时候自动把子类转换为父类类型"的结论,因为编译之后实际上丧失了变量的类型信息,所以反编译时会出现这种别扭的语法。实际上你可以注意到本来是父类引用的,被反编译成了子类引用。而问题的本质在于,Field实际上是没有多态的,也不能被覆盖,只会根据引用类型决定调用子类还是父类的Field。所以父类引用指向子类对象,也只会调用父类的Field。而Method是有多态的。
推荐阅读
- 过节■江苏省委省政府办公厅下发关于做好2021年元旦春节期间有关工作的通知
- 北京22家市属医院均开展安检基本实现重点区域安检措施全覆盖
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 孩子|别忽视小孩只早晨咳怎么回事?或许和这几点有关
- 徐冬冬|徐冬冬暴瘦12斤围度缩水,曾患上暴食症,身材变化和前男友有关
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 疾病|为何身体强壮的人会突然得大病,体弱的人却能长寿?与什么有关?
- |徐州建有农家书屋2205家,实现数字书屋全覆盖
- 广州白云警方通报巡逻车辆悬挂假牌视频:对有关人员依法依规进行处理
- 道路上的“职业拍客”该管吗?有关专家和部门回应
