java的方法在继承后于子类中的存在形式
一个子类继承了父类的一些方法后,这些方法存在形式是只位于父类中,使用时将值赋于父类中的方法;还是相当于从父类中直接将这段代码copy于子类中??...
一个子类继承了父类的一些方法后,这些方法存在形式是只位于父类中,使用时将值赋于父类中的方法;还是相当于从父类中直接将这段代码copy于子类中??
展开
展开全部
你这个问题,分两个阶段来回答你:
(1)编译前,也就是你敲代码的时候,比如你用 this.parent() 引用了父类的parent()方法,这时,它们是分开存储的,子类和父类是分两个.java文件存储的,代码自然也没复制到子类中,这个你看得见,你子类中没有parent()方法内部的代码,对吧;编译后,也是分为两个.class文件存储的,编译是根据.java文件来的,代码仍然没有复制到子类。
(2)运行时,虚拟机有个类的加载机制,程序运行时,类加载器会先加载程序入口类(加载的是.class文件),接着加载它的父类和引用实例的类到内存中,也就是说子类和父类是分开的两个类,当运行过程中,需要使用到父类的方法时,虚拟机会直接到父类中取方法的代码,不需要复制给子类,直接执行,也就是说方法存仍然在于父类中、也没有copy到子类
(1)编译前,也就是你敲代码的时候,比如你用 this.parent() 引用了父类的parent()方法,这时,它们是分开存储的,子类和父类是分两个.java文件存储的,代码自然也没复制到子类中,这个你看得见,你子类中没有parent()方法内部的代码,对吧;编译后,也是分为两个.class文件存储的,编译是根据.java文件来的,代码仍然没有复制到子类。
(2)运行时,虚拟机有个类的加载机制,程序运行时,类加载器会先加载程序入口类(加载的是.class文件),接着加载它的父类和引用实例的类到内存中,也就是说子类和父类是分开的两个类,当运行过程中,需要使用到父类的方法时,虚拟机会直接到父类中取方法的代码,不需要复制给子类,直接执行,也就是说方法存仍然在于父类中、也没有copy到子类
追问
心服口服,Thanks
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询