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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李小然 于 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. }
复制代码
求大神解答?

2 个回复

倒序浏览
非静态内部类的调用必须现有对象,才可以调用它中的变量和方法,但是静态成员变量的事在对象之前出现的,这里就出现了矛盾。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
非静态内部类是通过外部类的this指针指向的。那么对于非静态内部类的动态成员,可以通过两个this指针确定位置。但是如果允许静态成员会出现什么情况?首先,静态成员是不能通过任何this指针的,但是为了确定这个成员,必须确定这个成员所在的类实例。但是这个实例必须通过一个this指针确定。这在语法以及处理上都会造成很大的麻烦。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马