黑马程序员技术交流社区
标题:
静态修饰符与私有为什么不能修饰局部方法中的内部类?
[打印本页]
作者:
郑庆伟
时间:
2012-6-28 18:58
标题:
静态修饰符与私有为什么不能修饰局部方法中的内部类?
本帖最后由 郑庆伟 于 2012-6-28 21:08 编辑
class Outer
{
int x = 3;
void method()
{
class Inner//
此处的局部方法中的内部类为什么不能用静态修饰符static和私有private来修饰?
{
void function()
{
System.out.println(Outer.this.x);
}
}
}
}
class InnerClassDemo3
{
public static void main(String[] args)
{
}
}
静态修饰符还有私有private为什么只能修饰成员变量和方法而不能修饰局部的?
作者:
赵倩倩
时间:
2012-6-28 19:39
这个主要是由作用范围决定的。在方法内部定义的内部类,只能在方法的内部,也就是定义该类的区域内使用。
这样的结果就是,在方法之外,并不能访问到该内部类,也即不需要private和static等修饰,因为他本身就是在内部使用的,外部不能访问
还可以从另一个方面想一下,如果在外部可以使用的话,要以什么样的语法进行调用,他的生命周期又将是怎样的呢
作者:
刘笑
时间:
2012-6-28 19:57
一个类中,一个static变量只会有一个内存空间,虽然有多个类实例,但这些类实例中的这个static变量会共享同一个内存空间。所以声明为static的变量实质上就是全局变量。所以static不能修饰局部变量。
此外,局部变量是存放在栈中的,程序运行完立即释放。它只能在定义它的方法内部使用。所以不用修饰符
作者:
郑庆伟
时间:
2012-6-28 20:16
哦 这样就没有意义了,这样也无法通过编译。
作者:
孙飞
时间:
2012-6-28 20:38
静态修饰的内容被所有对象共享,局部变量的作用域只能是所在的函数,而且是在栈内存中存在,当出了作用域就会被释放,根本不能让所以对象共享,而且静态修饰的内容存在于方法区,在内存中和局部变量的存储空间也不一样,所以是不能修饰局部的,上面说的局部只在作用域中有效,生命周期短,但静态是随便类的加载而加载,随类的消失而消失,生命周期也是最长的。private访问控制符是不能修饰局部的
作者:
郑庆伟
时间:
2012-6-28 20:55
嗯 问的问题有点.......,跟1+1为什么等于2一样。
作者:
刘孝泽
时间:
2014-7-3 16:47
我也遇到这个问题 多谢了
作者:
刘帅
时间:
2015-4-5 18:36
正好遇到这个问题~~~~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2