成员内部类
- 在类的内部定义,与实例变量、实例方法同级别的类。
- 外部类的一个实例部分,创建内部类对象时,必须依赖外部类对象。
- Outer out = new Outer();
- Inner in = out.new Inner();
//外部类
public class Outer{
//实例变量
private String name = "张三";
private int age = 20;
//内部类
class Inner{
private String address = "北京";
private String phone = "110";
//方法
public void show(){
//打印外部类的属性
System.out.println(name);
System.out.println(age);
//打印内部类中的属性
System.out.println(address);
System.out.println(phone);
}
}
}
public class TestOuter{
public static void main(String[] args){
//1.创建外部类对象
Outer outer = new Outer();
//2.创建内部类对象
Inner inner = outer.new Inner();
//一步到位
Inner inner2 = new Outer().new Inner();
inner.show();
inner2.show();
}
}
- 当外部类、内部类存在重名属性时,会优先访问内部类属性。
public class Outer{
private String name = "张三";
class Inner{
private String name = "李四";
public void show(){
//内部类属性和外部类的属性名字相同Outer.this
System.out.println(Outer.this.name);
}
}
}
- 成员内部类不能定义静态成员。(注:但是能包含静态常量。)