java内部类,与对象的理解

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的构造器的调用。

猜你喜欢

转载自blog.csdn.net/qq_41648092/article/details/86545653