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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鱼饵 中级黑马   /  2015-5-7 19:55  /  482 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

static是不能修饰构造函数的,我只知道一些模糊的原因具体说的不是很清楚,希望大神给个明确的原因,为什么不能是用static修饰构造函数?

8 个回复

倒序浏览
静态修饰的成员内容是随着类的加载而加载,而构造函数是随着对象的加载而加载,也就是说构造函数是在对象创建时调用的,他不可能优先于对象存在,所以说不能修饰
回复 使用道具 举报
static修饰的东西属于类,构造方法是创建对象时用的,所以static不可能修饰构造方法
回复 使用道具 举报
static 一般修饰成员变量和成员方法,static修饰的成员随着类的加载而加载,优先于对象而存在,而构造方法是随着对象的创建而建立的,在内存中的顺序不一样,用static修饰构造方法就会报错
回复 使用道具 举报
同样不理解 学习了
回复 使用道具 举报
构造器是一种特殊的static方法。 如果是从导致类加载的角度来看,那么算static的,因为访问类的static方法或static属性,或者调用构造函数会导致类被加载。 如果从static方法内部不能调用非static方法来说,构造器里面又能调用非static方法。 Thinging in java也说构造器是隐式的static。
回复 使用道具 举报
北京南瓜 发表于 2015-5-7 20:03
静态修饰的成员内容是随着类的加载而加载,而构造函数是随着对象的加载而加载,也就是说构造函数是在对象创 ...

非常感谢,同时我还想确认一个问题,是不是说在没有创建对象的时候,堆内存中还没有属性,方法区的部分也没有对应的函数和构造函数。
回复 使用道具 举报
类只有在创建对象时,才能在堆内存中开辟一片空间,用于存储成员变量,而对象中的方法进入方法区,至于构造函数是对象一创建给对象中成员变量进行初始化的,具体存在哪我也不清楚
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马