内部类,即将一个类定义置于另一个类的定义之中。
public class Parcel1 {
class Contents{
private int i = 11;
public int value(){
return i;
}
}
public Contents cont(){
return new Contents();
}
class Destination{
private String label;
Destination(String whereTo){
label = whereTo;
}
String readLabel(){
return label;
}
}
public Destination dest(String la){
return new Destination(la);
}
public void ship(String dest){
Contents c = new Contents();
Destination d = new Destination(dest);
System.out.println(d.readLabel() + c.i);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Parcel1 p = new Parcel1();
p.ship("hahaha");
Parcel1.Contents a = p.cont();
Parcel1.Destination b = p.dest("lalala");
System.out.println(b.readLabel() + a.i);
}
}
上例中,Contents和Destination就是定义在Parcel1中的类。这里称Contents和Destination为内部类,称Parcel1为外部类。特点:1.内部类可以自由地访问外部类的成员变量;2.如果内部类被static修饰,即静态的,那么他只能访问外部类的静态变量。3.在外部类非static方法内部之外的任何地方(即static方法)生成内部类的一个对象,必须将那个对象的类型设为“外部类.内部类”(如main中Parcel1.Contents a = p.cont();以及ship中 Contents c = new Contents();)。例如cont()就是外部类的一个特殊方法,返回一个内部类的句柄。