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

来源:7-7 Java 中的静态内部类

小瘦学Java

2017-03-29 11:25

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

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

写回答 关注

3回答

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

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

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

    小瘦学Jav... 回复逆风落叶

    (*^__^*) 嘻嘻……,这个是慕课老师写的,我是屌丝来的,悟性比较低,那么在这个代码中,他们都有相同的成员变量:int b ;老师给的案例也是直接为:System.out.println("访问外部类中的b:"+SOuter.b);但是,我在编译器也出现错误,是我把这个理解错误了吗?

    2017-03-30 15:37:23

    共 5 条回复 >

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

    你外部的b不是静态变量

    小瘦学Jav...

    对的,我现在学完第二季,也理解了,谢谢大神

    2017-04-19 10:32:13

    共 1 条回复 >

  • 标准与或式
    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修饰

    标准与或式 回复小瘦学Jav...

    额,你这回复的好快,我还没来得及改正自己的错误

    2017-04-04 21:00:01

    共 5 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530559 学习 · 6091 问题

查看课程

相似问题