黑马程序员技术交流社区

标题: static的小问题 [打印本页]

作者: 鱼饵    时间: 2015-5-7 19:55
标题: static的小问题
static是不能修饰构造函数的,我只知道一些模糊的原因具体说的不是很清楚,希望大神给个明确的原因,为什么不能是用static修饰构造函数?
作者: 北京南瓜    时间: 2015-5-7 20:03
静态修饰的成员内容是随着类的加载而加载,而构造函数是随着对象的加载而加载,也就是说构造函数是在对象创建时调用的,他不可能优先于对象存在,所以说不能修饰
作者: 哔哩哔哩    时间: 2015-5-7 20:05
static修饰的东西属于类,构造方法是创建对象时用的,所以static不可能修饰构造方法
作者: 893269222    时间: 2015-5-7 20:55
static 一般修饰成员变量和成员方法,static修饰的成员随着类的加载而加载,优先于对象而存在,而构造方法是随着对象的创建而建立的,在内存中的顺序不一样,用static修饰构造方法就会报错
作者: LPStone    时间: 2015-5-7 20:55
同样不理解 学习了
作者: 我干阿衰    时间: 2015-5-7 21:09
构造器是一种特殊的static方法。 如果是从导致类加载的角度来看,那么算static的,因为访问类的static方法或static属性,或者调用构造函数会导致类被加载。 如果从static方法内部不能调用非static方法来说,构造器里面又能调用非static方法。 Thinging in java也说构造器是隐式的static。
作者: 鱼饵    时间: 2015-5-7 21:36
北京南瓜 发表于 2015-5-7 20:03
静态修饰的成员内容是随着类的加载而加载,而构造函数是随着对象的加载而加载,也就是说构造函数是在对象创 ...

非常感谢,同时我还想确认一个问题,是不是说在没有创建对象的时候,堆内存中还没有属性,方法区的部分也没有对应的函数和构造函数。
作者: 北京南瓜    时间: 2015-5-7 22:39
类只有在创建对象时,才能在堆内存中开辟一片空间,用于存储成员变量,而对象中的方法进入方法区,至于构造函数是对象一创建给对象中成员变量进行初始化的,具体存在哪我也不清楚




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