可以将一个类的定义放在另一个类的定义内部,这就是内部类。
public class Parcel2 {
class Content {
private int i = 11;
public int value() {
return i;
}
}
class Destination {
private String label;
public Destination(String whereTo) {
// TODO 自动生成的构造函数存根
label = whereTo;
}
String readlabel() {
return label;
}
}
public Content content() {
return new Content();
}
public Destination to(String s) {
return new Destination(s);
}
private void ship(String dest) {
// TODO 自动生成的方法存根
Content c = content();
Destination d = to(dest);
System.out.println(d.readlabel());
}
public static void main(String[] args) {
Parcel2 p = new Parcel2();
p.ship("Tasmania");
Parcel2 q = new Parcel2();
Parcel2.Content c = q.content();
Parcel2.Destination d = q.to("Borneo");
}
}
如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,那么必须像在main方法中那样,具体的指明这个对象的类型:OuterClassName.InnerClassName。
当生成一个内部类的对象时,此对象与制造它的外围对象(enclosing object)之间就有了一种联系,所以他能访问其外围对象的所有成员,而不需要添加任何特殊条件。
此外,内部类还拥有其外部类的所有元素的访问权。