内部类就是定义在类内部的类。
内部类可以访问外部类的所有属性和方法
public class Outer {
private String name = "DASHA";
public class Inner{
public void whoAmI(){
//在内部类中,我们可以访问外部类的任意方法和
//属性,这是因为内部类隐藏持有外部类的实例。 上面说的前提条件是,内部类不是静态的
System.out.println("I am " + name);
}
}
public Inner getInner(){
return new Inner();
}
public static void main(String[] args){
Outer outer = new Outer();
//下面的方法都可以实例化内部类,因为内部类实例中需要
//隐藏包含外部类的实例,所以必须先实例化外部类,才能实例化内部类
//Outer.Inner inner = outer.new Inner();
Outer.Inner inner = outer.getInner();
inner.whoAmI();
}
}
在内部类中获取外部类的实例
public class Outer {
private String name = "DASHA";
public class Inner{
public Outer getOuter(){
return Outer.this;
}
}
public Inner getInner(){
return new Inner();
}
public void showInfo(){
System.out.println("I am in showInfo");
}
public static void main(String[] args){
Outer outer = new Outer();
Outer.Inner inner = outer.getInner();
inner.getOuter().showInfo();
}
}