有没有家人能通俗的讲一讲关于java多态,为什么编译一定看左边,我想看右边不行么?为什么方法的运行一定是先看右边,我想看左边不行么?成员变量的运行我想先看右边不行么?
有没有家人能通俗的讲一讲关于java多态,为什么编译一定看左边,我想看右边不行么?为什么方法的运行一定是先看右边,我想看左边不行么?成员变量的运行我想先看右边不行么?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- GISer Liu 2024-02-28 20:20关注
该回答引用自GPT-3.5,由博主GISer Liu编写:
针对您提出的关于Java多态的问题,我会一一进行解答:
- 为什么编译一定看左边,我想看右边不行么?
这是因为在Java中,编译器决定使用哪个方法或字段是根据引用变量的类型,即左边的类型,而不是根据实际对象的类型,即右边的类型。这是因为Java是一种静态类型语言,编译器在编译时期需要确定方法和字段的调用,而这些信息是通过引用变量的类型来确定的。这样做的好处是可以在编译期就能发现一些潜在的错误,例如调用不存在的方法或字段。 - 为什么方法的运行一定是先看右边,我想看左边不行么?
Java的方法调用是基于对象的实际类型,即右边的类型。当调用一个方法时,Java虚拟机会根据对象的实际类型来确定调用哪个版本的方法,而不是根据引用变量的类型。这种方式可以实现多态性,即同一个方法调用可以根据对象的实际类型来执行不同的实现。 - 成员变量的运行我想先看右边不行么?
与方法不同,成员变量的访问是根据引用变量的类型,即左边的类型来确定的。这是因为成员变量不具有多态性,即成员变量的访问不受对象的实际类型影响,而只受引用变量的类型影响。因此,无论对象的实际类型是什么,成员变量的访问都是根据引用变量的类型来确定的。
解决方案:
- 编译时期看左边是为了保证编译器可以静态地确定方法和字段的调用,从而减少运行时错误的发生。
- 运行时期看右边是为了实现多态性,使得程序能够根据对象的实际类型来执行不同的方法实现。
- 成员变量的访问则是根据引用变量的类型确定的,无论对象的实际类型是什么,都是访问引用变量类型所对应的成员变量。
希望以上解答能够帮助您理解Java多态的相关概念。
如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 - 为什么编译一定看左边,我想看右边不行么?
悬赏问题
- ¥15 mmo能不能做客户端怪物
- ¥15 osm下载到arcgis出错
- ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
- ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
- ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
- ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
- ¥15 QQ邮箱过期怎么恢复?
- ¥15 登录他人的vue项目显示服务器错误
- ¥15 (标签-android|关键词-app)
- ¥15 comsol仿真压阻传感器