课程
/后端开发
/Java
/Java入门第二季 升级版
在使用eclipse进行编译时,编译器一直提示错误,但是编译方法是正确的,为啥编译器会提示错误?求大神解答
2017-03-29
源自:Java入门第二季 升级版 7-7
正在回答
静态内部类必须通过new 外部类().成员的方式访问非静态成员;
比如你的12行代码要这样写:syso("访问外部类中的成员b:" + new SOuter().b );
逆风落叶
小瘦学Java 提问者 回复 逆风落叶
逆风落叶 回复 小瘦学Java 提问者
你外部的b不是静态变量
小瘦学Java 提问者
你对成员变量b用了private修饰,导致该变量不能被任何实例对象引用,针对你的问题,有两种改法:
将b用public static修饰,变成静态成员变量,这时就可以用SOuter2.b来引用它了
将SOuter2.b改为new SOuter2().b,这样做的实质是通过new SOuter2()产生了一个SOuter2类的匿名对象,然后再通过这个匿名对象去引用成员变量b,为了让b能够被对象引用,你还需要将b改成public修饰
标准与或式 回复 小瘦学Java 提问者
小瘦学Java 提问者 回复 标准与或式
举报
课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙
2 回答静态内部类与方法内部类
4 回答静态内部类的静态方法如何访问静态内部类的非静态成员?
4 回答为什么这段使用静态内部类的程序会出错?求解答
3 回答编译器报错
2 回答内部类分为:成员内部类,方法内部类,静态内部来,匿名内部类,没理解透