在书上看到有这样的说法
对一个类创建不同的对象时计算机只给对象的所有的属性分配了内存,而并没有给方法分配内存。方法只有一个,是属于所有的对象的,所以无论创建了多少个对象,计算机只会为一个方法分配一块内存。 第一次看到这样的说法,吃不准,有没有人给个肯定的答复,或者可以通过程序调试能证明出来的。因为自己在教java,怕误导了学生
谢谢
对一个类创建不同的对象时计算机只给对象的所有的属性分配了内存,而并没有给方法分配内存。方法只有一个,是属于所有的对象的,所以无论创建了多少个对象,计算机只会为一个方法分配一块内存。 第一次看到这样的说法,吃不准,有没有人给个肯定的答复,或者可以通过程序调试能证明出来的。因为自己在教java,怕误导了学生
谢谢
在java中为避免对象属性的bug,
当计算机为一个类创建不同的对象时,会默认的为每个对象的每个属性付初始值,
所以给对象的所有的属性分配了内存.
我用JB调试时可以看到的确是这样的.
但是我不能证明"计算机只会为一个方法分配一块内存"
本人理解是:
这里的"一个方法"应理解为类的每一种方法,即:
假设classA有f()和k()两种方法,并且产生了c1,c2,c3三个对象,
但是计算机为f()分配了一块内存,入口地址为pf,为k()也分配了一块内存,入口地址为pk
对象c1,c2,c3在调用f()时,都将数据发向地址pf.
所以说"无论创建了多少个对象,计算机只会为一个方法分配一块内存"
我觉得原因是方法是处理数据的过程,一个类产生的对象的处理方法是一样的,
所以就只需要一块内存了.
我觉得要是讲给学生不用讲那么深,
太深了很容易迷惑的