A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liuyangyang 中级黑马   /  2013-4-12 19:11  /  1253 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 liuyangyang 于 2013-4-13 14:01 编辑

如果子类继承了父类的A方法,方法区中有二份A方法吗?

4 个回复

正序浏览

如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
有的,子类和父类都会被加载进内存,所以其中的方法也会被加载进去,只不过根据对象的不同,调用也不同罢了。
回复 使用道具 举报
类的实例方法在内存中是只有一份,类的实例方法存在一个专门的区叫方法区,事实上类刚装载的时候方法就被装载好了,不过它们在"睡眠",只是这些方法必须当有对象产生的时候才会"苏醒".(比如,一个输出类的成员变量的方法,如果连对象都没有,何来的输出成员变量),方法在装载的时候就有了,但是不可用,因为它没有指象任何一个对象。
回复 使用道具 举报
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。
这是C语言中程序占用的几种内存,我觉得也适用于java语言中,子类继承了父类,那么在将子类和父类加载到内存中,应该是放在程序的代码区,那么你子类和父类都有各自的方法,只是在调用的时候,会根据对象的不同去调用不同的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马