为什么不能直接(外部类名.属性名)呢
作用范围不同,直接那样做,容易搞混淆
public class HelloWorld{
//外部类的私有属性name
private String name = "imooc";
//外部类的成员属性
int age = 20;
//成员内部类Inner
public class Inner {
String name = "爱慕课";
public void show() {
-----------------------------------1------------------
System.out.println("外部类中的name:" + HelloWorld.this.name );
System.out.println("内部类中的name:" + name );
System.out.println("外部类中的age:" + age);
结果:
外部类中的name:imooc (两个name名称相同,外部类的变量使用this关键字)
内部类中的name:爱慕课
外部类中的age:20
----------------------------------2-------------------
System.out.println("外部类中的name:" + name );
System.out.println("内部类中的name:" + name );
System.out.println("外部类中的age:" + age);
结果:
外部类中的name:爱慕课 (两个name名称相同,默认内部类的变量name)
内部类中的name:爱慕课
外部类中的age:20
对于成员内部类来说,当外部类和内部类有相同的成员变量和方法时,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量和方法需要使用this关键字;对于静态内部类,不能直接访问外部类的非静态成员,需要通过"new外部类().成员"的方式访问