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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gzbbxu 中级黑马   /  2013-6-17 17:01  /  1536 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么都不能用static修饰?

5 个回复

倒序浏览
用static修饰后就是随着类的加载而加载的了, 局部内部类如果使用static就不能对外部成员进行自由调用了, 作为取舍, java规定了不能使用static修饰.
也因此局部内部类的成员不能有static(否则会优先于类的加载而加载, 这明显不合理.)

不知道解释的对不对, 请大神指点
回复 使用道具 举报
1、局部内部类
他是写在外部类的一个方法体里,方法是成员,可以static,而方法体里面的东西是运算过程,不是成员,
只有成员可以用private和static修饰。

2、局部内部类的成员能不能static我不知道,没听说过

3、局部内部类可以访问定义他的方法的局部变量,但是变量必须是final修饰的。
因为final定义的局部变量相当于一个常量,延长了其生命周期,使得方法消亡时,其内部类仍可以访问该变量。

评分

参与人数 1技术分 +1 收起 理由
Super_Class + 1

查看全部评分

回复 使用道具 举报
1.static 是成员修饰符,内部类定义在局部,就不是成员。
2.内部类中定义了静态成员时,该内部类也必须是静态的,第一条不成立所以第二条也不成立。

评分

参与人数 1技术分 +1 收起 理由
Super_Class + 1

查看全部评分

回复 使用道具 举报
既然清楚static的变量是类的,哪就应该知道为什么啊,
在方法里面定义的变量是局部变量,就是说他有一定的作用范围和生命周期,就只能在方法里面使用而不能将其扩展到别的地方,这个变量在方法结束后就会被回收器回收,就不再存在了,而要强制将其加上static就是要把它的作用范围扩展到整个类,这就与开始定义这个变量时违背了,这是语法上的错误。

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

回复 使用道具 举报
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马