黑马程序员技术交流社区

标题: 静态构造函数 [打印本页]

作者: 王春祥    时间: 2012-3-18 23:23
标题: 静态构造函数
java为什么没有静态构造函数呢,将所有新建对象做相同的初始化,这是可以说的通的吧
作者: 贠(yun)靖    时间: 2012-3-18 23:29
因为有构造代码块的存在  构造代码块就是实现你说的这个功能的   他可以为所有对象统一初始化一些公有的属性
   静态时随着类的加载而存在的  比对象先加载进内存  如果构造函数可以用static修饰的话  这个太浪费空间了    对象都用完了 不存在了 而他的构造函数还在内存
这不是浪费资源吗?    所以就出现了构造代码块  
   内存加载顺序是  静态成员  构造代码块    构造函数
作者: 李飞    时间: 2012-3-18 23:57
首先静态是存放在方法区中的,和静态成员变量是一样一样的。

如果是静态的话:
1.当第一次建立一个对象的时候,没有问题
2.当第二次建立对象的时候,就会将第一次建立的对象覆盖掉,原来的对象的数据就会全部丢失,对我们来说是一个灾难
作者: 吴超    时间: 2012-3-19 00:03
一切皆对象
静态的都是类,已经定义好的
构造函数是实例化成一个对象
作者: OMG    时间: 2012-3-19 00:18
是否要静态,需要看需求:
1,知道单例设计模式是怎么定义构造函数的吗?就是构建一个静态的构造函数,字节码一加载进内存,就自动建立对象,并对外提高一个获取对象的静态方法;
2,枚举的原理是什么?其实就是用静态构造函数建立对应个数的对象;
3,总之,静态可以修饰类,也可以修饰类的成员变量,成员函数和构造函数;
作者: a504079589    时间: 2012-3-19 00:28
所有类都是继承于Object的, 在所有类实例化为对象的时候, 必然会先调用Object的默认构造函数;   
如果一个类的构造函数是静态的, 那么它将无法调用Object的构造函数;
静态函数就是指该函数不和具体对象相关,只和类相关, 但是构造函数是和对象直接关联的;
作者: 盛祖华    时间: 2012-3-19 01:04
    静态类使用关键字static,是可以被继承的,构造函数可以被子类重写和继承。还有,静态类不是不可以实例化,而是不需要实例化就可以用。
    构造方法用处就是类实例化的时候做一些初始化操作,静态类只能是内部类。
作者: 王春祥    时间: 2012-3-19 14:53
贠(yun)靖 发表于 2012-3-18 23:29
因为有构造代码块的存在  构造代码块就是实现你说的这个功能的   他可以为所有对象统一初始化一些公有的属 ...

谢谢,再问下对象建立时,构造方法才会在方法区出现吗,对象用完构造方法就消失吗,再建立对象时再产生吗
作者: 泮和顺    时间: 2012-3-19 15:43
就是类中静态代码块啊。
作者: 贠(yun)靖    时间: 2012-3-19 15:52
标题: RE: 静态构造函数
王春祥 发表于 2012-3-19 14:53
谢谢,再问下对象建立时,构造方法才会在方法区出现吗,对象用完构造方法就消失吗,再建立对象时再产生吗 ...

嗯,只要有创建对象了,构造方法必然会被调用,而对象用完后是由垃圾回收器不定时回收的,具体怎么搞就不知道了,对象都没了,构造方法存在也没意义,我认为构造方法应该先释放内存,因为它只随对象加载一次,完了就没用了,而对象还可以调用其他方法和属性




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2