package equality;
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 Contents();
Destination d=new Destination(dest);
System.out.print(d.readLabel());
}
public static void main(String[] args){
Parcel1 p=new Parcel1();
p.ship("Tasmania");
}
}
当我们在ship()方法里面使用内部类的时候,与使用普通类没有什么不同。在这里,实际的区别只是内部类的名字是嵌套在Parcel1里面的。不过你将会看到,这并不是唯一的区别。
package equality;
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 Destination to(String s){
return new Destination(s);
}
public Contents contents(){
return new Contents();
}
public void ship(String dest){
Contents c=contents();
Destination d=to(dest);//通过to方法在调用Destination构造器
System.out.println(d.readLabel());
}
public static void main(String[] args){
Parcel2 p=new Parcel2();
p.ship("Tasmania");
Parcel2 q=new Parcel2();
Parcel2.Contents c=q.contents();
Parcel2.Destination d=q.to("Borneo");
}
}
这里可见new kdkdk()是对一个对象的调用,就好比A a=new A();是对A的构造器的调用。