黑马程序员技术交流社区

标题: 为什么非静态内部类不能有静态成员变量? [打印本页]

作者: 小钟    时间: 2014-5-30 21:52
标题: 为什么非静态内部类不能有静态成员变量?
本帖最后由 李小然 于 2014-5-31 00:45 编辑
  1. public class InnerClassDemo {
  2.      public static void main(String[] args) {
  3.      }
  4. }

  5. class Outer{
  6.       int x=10;
  7.       class Inner{              //非静态内部类;
  8.          static int x=20;          //为什么静态的成员变量报错?
  9.          public void show(){
  10.                int x=30;
  11.                System.out.println("内部类show方法");
  12.          }
  13.     }
  14. }
复制代码
求大神解答?

作者: yang1352546    时间: 2014-5-30 21:57
非静态内部类的调用必须现有对象,才可以调用它中的变量和方法,但是静态成员变量的事在对象之前出现的,这里就出现了矛盾。
作者: Lex    时间: 2014-5-30 22:03
非静态内部类是通过外部类的this指针指向的。那么对于非静态内部类的动态成员,可以通过两个this指针确定位置。但是如果允许静态成员会出现什么情况?首先,静态成员是不能通过任何this指针的,但是为了确定这个成员,必须确定这个成员所在的类实例。但是这个实例必须通过一个this指针确定。这在语法以及处理上都会造成很大的麻烦。




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