为什么内部方法show 访问外部类的 age成员的时候不用通过this?
因为内外有同名的成员时,用this来调用外部的成员以区别默认的直接调用内部的。。age唯独外部类独有因此不需要了,因为内部类可以直接用外部类的哪怕private了
因为内部类也有name,你想要访问外部类的name就需要用到this关键字,但是age只有外部类有,所以会默认输出外部类的age值
通过this关键字访问的是当前类的成员属性;
package com.hwadee.day612;
//外部类HelloWorld
public class HelloWorld{
//外部类的私有属性name
private String name = "imooc";
//外部类的成员属性
int age = 20;
//成员内部类Inner
public class Inner {
String name = "爱慕课";
int age = 10;
//内部类中的方法
public void show() {
int age = 30;
System.out.println("外部类中的name:" +HelloWorld.this.name);
System.out.println("内部类中的name:" +name);
System.out.println("外部类中的age:" + HelloWorld.this.age);
System.out.println("内部类中的age:" + this.age);
System.out.println("内部类方法中的age:" + age);
}
}
//测试成员内部类
public static void main(String[] args) {
//创建外部类的对象
HelloWorld o = new HelloWorld ();
//创建内部类的对象
Inner inn =o.new Inner();
//调用内部类对象的show方法
inn.show();
}
}
当内部类方法局部变量,内部类成员变量,以及外部类的成员变量重名时;可以通过对比加深理解。
因为age不是私有的外部类属性,而name是私有的外部类属性