当实例化一个对象后,比如File f = new File();这个时候在内存中是不是存储了File的所有属性与方法?
那要是用不到的方法 也存进去 不是很占内存空间吗
我还是有点不明,我意思是:比如说有一个类,类中有属性和方法,当实例化这个类的对象时,
是不是在堆内存存储了这个类的所有属性和方法?您的意思是这个类有个初值,属性和方法都有初值是么?然后赋值之后才算是使用了堆内存么?那不是所有属性和方法都要覆写了么。。。
new关键字就是使用堆内存,当new了之后,堆里存放了这个对象的所有方法和属性,并且初始化。不是赋值了之后才使用堆内存,而是new了之后马上就使用堆内存,只是使用时顺带初始化
(初始化其实在声明的时候就初始化了,在声明的时候会初始化静态的代码块,静态的方法和属性。而new了之后会先执行代码块,然后初始化话属性,并且给他默认值,然后接着赋值,方法会放在方法区里面,同样的类你new了多次,方法区里的方法只会产生一个,调用的时候都是调用同一个。
)
谢谢您。再问您一下,比如有一个类A,A a = (A)Class.forName("package.A").newInstance();这个是向上转型还是向下转型???