可以将一个类的定义放在另一个类的定义内部,这就是内部类。
10.1 创建内部类
public class Parcel1{
class Contents{
private int i=11;
public int value(){return i;}
}
class Destination{
private String label;
Destination(String whereTo){
label=whereTo;
}
String readLabel(){return label;}
}
public void ship(String dest){
Contents c=new Contests();
Destination d=new Destination(dest);
system.out.println(d.readLabel());
}
public static void main(String[]args){
Parcel1 p=new Parcel1();
p.ship("Tasmania");
}
}
如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,那么必须像在main()方法中那样,具体地指明这个对象的类型:OuterClassName.InnerClassName.
public class Parcel2{
class Contents{
private int i=11;
public int value(){return i;}
}
class Destination{
private String label;
Destination(String whereTo){
label=whereTo;
}
String readLabel(){return label;}
}
public Denstination to(String s){
return Destination(s);
}
public Contents contents(){
return new Contents();
}
public void ship(String dest){
Contents c=new Contests();
Destination d=new Destination(dest);
system.out.println(d.readLabel());
}
public static void main(String[]args){
Parcel2 p=new Parcel2();
p.ship("Tasmania");
Parcel2 q=new Parcel2();
Parcel.Contents c=q.contents();
parcel2.Destination d=q.to("Borneo");
}
}
练习1
public class Outer{
class Inner{
...
}
public Inner inner(){
return new Inner();
}
public static void main(String[]args){
Outer o=new Outer();
Outer.Inner i=o.inner();
}
}
10.2 链接到外部类