成员内部类是内部类中最常见的一种,所以也被称之为普通内部类。
使用方法
//外部类Out
public class Out{
//外部类的私有属性name
private String name = "落羽小末";
//外部类的成员属性
int age = 18;
//成员内部类In
public class In {
String name = "落末";
//内部类中的方法show
public void show() {
System.out.println("外部类中的name:" + Out.this.name );
System.out.println("内部类中的name:" + name);
System.out.println("外部类中的age:" + age);
}
}
//测试成员内部类
public static void main(String[] args) {
//创建外部类对象
Out o = new Out ();
//创建内部类对象
In i = o.new In();
//调用内部类对象的show方法
i.show();
}
}
- In类定义在Out类的内部,相当于Out类的一个成员变量的位置,In类可以使用任意访问控制符。
- In类中定义的show方法可以直接访问Out类中的数据,而且不会受到访问控制符的影响。
- 定义成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去创建一个内部类对象,方法为: 内部类名 对象名 = 外部类对象名.new内部类名();
- 编译后会产生两个.class文件,一个是外部类的,一个内部类的
- 外部类不能直接使用内部类的成员及方法,需要先创建内部类对象,然后通过内部类的对象来访问内部类中的成员以及方法。
- 如果外部类和内部类具有相同的成员变量或者方法(名称相同),内部类默认访问自己类中的成员变量或方法,如果要访问外部类中的成员变量,可以使用this关键字。
this关键字
this关键字代表当前的对象,如:
1.this.属性 操作当前对象的属性
2.this.方法 调用当前对象的方法
还可以用this关键字来返回对象的值,如在代码中,可以使用 return this,来返回某个类的引用.此时this关键字就代表了类的名称
public class Out{
return Out;
}
这里指的就是返回Out类.