问答详情
源自:7-7 Java 中的静态内部类

求大神解答,为啥按照静态内部类的方法编译,编译器会提示错误

在使用eclipse进行编译时,编译器一直提示错误,但是编译方法是正确的,为啥编译器会提示错误?求大神解答

http://img.mukewang.com/58db28e800010ee807020466.jpg

提问者:小瘦学Java 2017-03-29 11:25

个回答

  • 逆风落叶
    2017-03-29 11:42:22
    已采纳

    静态内部类必须通过new 外部类().成员的方式访问非静态成员;

    比如你的12行代码要这样写:syso("访问外部类中的成员b:" + new SOuter().b );

  • 慕粉0632409757
    2017-04-18 10:36:46

    你外部的b不是静态变量

  • 标准与或式
    2017-04-03 22:03:28

    你对成员变量b用了private修饰,导致该变量不能被任何实例对象引用,针对你的问题,有两种改法:

    1.  将b用public static修饰,变成静态成员变量,这时就可以用SOuter2.b来引用它了

    2. 将SOuter2.b改为new SOuter2().b,这样做的实质是通过new SOuter2()产生了一个SOuter2类的匿名对象,然后再通过这个匿名对象去引用成员变量b,为了让b能够被对象引用,你还需要将b改成public修饰