JAVA:组合的使用

组合(Composition),java代码复用的一种方法。顾名思义,就是使用多个已有的对象组合为一个功能更加复杂强大的新对象。体现的是整体与部分、拥有的关系。又因为在对象之间,各自的内部细节是不可见的,所以我们也说这种方式的代码复用是黑盒式代码复用。


如下面Bath(洗澡)与Soap(肥皂)的关系,Soap可以是Bath过程的一部分。

class Soap{
	private String s;
	public Soap() {
		// TODO Auto-generated constructor stub
		System.out.println("Soap()");
		s="Constructor";
	}
	public String toString(){
		return s;
	}
}
public class Bath {
	private String s1="happy",s2="happy",s3,s4;
	private Soap castille;
	private int i;
	private float toy;
	public Bath(){
		System.out.println("Inside Bath()");
		s3="Joy";
		toy=3.14f;
		castille=new Soap();
	}
	{i=47;}
	public String toString(){
		if(s4==null)
			s4="Joy";
		return  
				"s1 = "+s1+"\n"+
				"s2 = "+s2+"\n"+
				"s3 = "+s3+"\n"+
				"s4 = "+s4+"\n"+
				"i = "+i+"\n"+
				"toy = "+toy+"\n"+
				"castille = "+castille+"\n";
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Bath x= new Bath();
		System.out.println(x);
	}
}
/* output
Inside Bath()
Soap()
s1 = happy
s2 = happy
s3 = Joy
s4 = Joy
i = 47
toy = 3.14
castille = Constructor
*/
注释:toString(),一般显示输出该类型时会自动调用,每一个非基本类型的对象都有一个toString()方法。Object类的toString方法返回一个包含该类的对象是一个实例的名称字符串的符号` @”和符号进制表示的对象的哈希码。即如果注释掉Soap()的toString方法后,最后一行输出的内容为“castille = thinkinginjava7_.Soap@3d012ddd”,故重写该方法。
阅读更多
个人分类: java
上一篇linux:用户管理
下一篇JSP:struts2 自定义类型转换
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭