java的方法在继承后于子类中的存在形式

一个子类继承了父类的一些方法后,这些方法存在形式是只位于父类中,使用时将值赋于父类中的方法;还是相当于从父类中直接将这段代码copy于子类中??... 一个子类继承了父类的一些方法后,这些方法存在形式是只位于父类中,使用时将值赋于父类中的方法;还是相当于从父类中直接将这段代码copy于子类中?? 展开
 我来答
819793859
2015-10-10 · TA获得超过602个赞
知道小有建树答主
回答量:499
采纳率:40%
帮助的人:266万
展开全部

如上运行结果,说明父类有的方法子类一定有,但是当这个方法从父类删除之后,子类也将不能调用goHome()方法,所以不是copy;另外,虽然父类中定义了goHome()方法,但是子类中仍然可以重写该方法,然而同一个类中是不能定义两个名字和参数都相同的方法的,这也从旁佐证了子类可以调用父类的方法不是基于copy

追问
我感觉你这个说法有点牵强,因为当再次生成的时候,可能子类也跟着改变了。
梦非梦亦非梦
推荐于2017-09-03 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:57
采纳率:0%
帮助的人:59.8万
展开全部
你这个问题,分两个阶段来回答你:
(1)编译前,也就是你敲代码的时候,比如你用 this.parent() 引用了父类的parent()方法,这时,它们是分开存储的,子类和父类是分两个.java文件存储的,代码自然也没复制到子类中,这个你看得见,你子类中没有parent()方法内部的代码,对吧;编译后,也是分为两个.class文件存储的,编译是根据.java文件来的,代码仍然没有复制到子类。
(2)运行时,虚拟机有个类的加载机制,程序运行时,类加载器会先加载程序入口类(加载的是.class文件),接着加载它的父类和引用实例的类到内存中,也就是说子类和父类是分开的两个类,当运行过程中,需要使用到父类的方法时,虚拟机会直接到父类中取方法的代码,不需要复制给子类,直接执行,也就是说方法存仍然在于父类中、也没有copy到子类
追问
心服口服,Thanks
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式