黑马程序员技术交流社区
标题:
为什么非静态内部类不能有静态成员变量?
[打印本页]
作者:
小钟
时间:
2014-5-30 21:52
标题:
为什么非静态内部类不能有静态成员变量?
本帖最后由 李小然 于 2014-5-31 00:45 编辑
public class InnerClassDemo {
public static void main(String[] args) {
}
}
class Outer{
int x=10;
class Inner{ //非静态内部类;
static int x=20; //为什么静态的成员变量报错?
public void show(){
int x=30;
System.out.println("内部类show方法");
}
}
}
复制代码
求大神解答?
作者:
yang1352546
时间:
2014-5-30 21:57
非静态内部类的调用必须现有对象,才可以调用它中的变量和方法,但是静态成员变量的事在对象之前出现的,这里就出现了矛盾。
作者:
Lex
时间:
2014-5-30 22:03
非静态内部类是通过外部类的this指针指向的。那么对于非静态内部类的动态成员,可以通过两个this指针确定位置。但是如果允许静态成员会出现什么情况?首先,静态成员是不能通过任何this指针的,但是为了确定这个成员,必须确定这个成员所在的类实例。但是这个实例必须通过一个this指针确定。这在语法以及处理上都会造成很大的麻烦。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2