这道题中内部类输出的那个地方我用eclipse打的时候
//外部类的私有属性name private String name = "imooc";//这个就要加上static …… public class Inner { String name = "爱慕课"; //内部类中的方法 public void show() { System.out.println("外部类中的name:" + HelloWorld.this.name);//不加this那前面必须为static类型,这个为什么 System.out.println("内部类中的name:" + name ); System.out.println("外部类中的age:" + age); } }
我就没明白:
1.为什么不加this会报错,(HelloWorld.this.name)
2:也是就是改正这个问题为什么要么加上this,要么就把外部类加上static
很多都是规则,多写写就慢慢理解了
你要把HelloWorld.this看做是一个整体,是内部类里面用来访问外部类实例变量的方式,就是这么规定的;在内部类中this代表的是本内部类实例,而HelloWorld.this(假设HelloWorld是外部类)就是代表对应的外部类实例。
这个没有为什么,这是Java的规则,记住就好了。
static是静态修饰符,加static后变成静态成员变量,在内部类中可以直接用类名.静态成员变量名来访问外部类的成员变量