黑马程序员技术交流社区
标题:
利用组合实现复用
[打印本页]
作者:
庄星睿
时间:
2012-6-11 17:28
标题:
利用组合实现复用
先用继承实现以下 Animal ,Bird ,Wolf之间的关系
class Animal
{
private void beat()
{
System.out.println("心脏跳动.........");
}
public void breath()
{
beat();
System.out.println("呼吸.......");
}
}
class Bird extends Animal
{
public void fly()
{
System.out.println("flying.......");
}
}
class Wolf extends Animal
{
public void run()
{
System.out.println("running.......");
}
}
public class InheritTest
{
public static void main(String[] args)
{
Bird b=new Bird();
b.breath();
b.fly();
Wolf w=new Wolf();
w.breath();
w.run();
}
}
复制代码
先不考虑别的,如果用组合的方式实现代码复用:
class Animal
{
private void beat()
{
System.out.println("心脏跳动........");
}
public void breath()
{
beat();
System.out.println("呼吸........");
}
}
class Bird
{
private Animal a;
public Bird(Animal a)
{
this.a=a;
}
public void breath()
{
a.breath();
}
public void fly()
{
System.out.println("flying.......");
}
}
class Wolf
{
private Animal a;
public Wolf(Animal a)
{
this.a=a;
}
public void breath()
{
a.breath();
}
public void run()
{
System.out.println("running.......");
}
}
public class CompositeTest
{
public static void main(String[] args)
{
Animal a1=new Animal();
Bird b=new Bird(a1);
b.breath();
b.fly();
Animal a2=new Animal();
Wolf w=new Wolf(a2);
w.breath();
w.run();
}
}
复制代码
代码比较简单,但能表达组合就是将原来父类Animal嵌入进子类中,从而成为了子类中的一部分,就是"has a"关系,在内存空间上,组合比继承多一个在栈内存中的引用那个父类对象的引用变量,当然这里还是用继承好一些,那个关于聚合的例子谁给一个,最好能简单说明问题滴,视频里只是说了一下聚合和组合的紧密程度不同,那聚合的实现方式也应该和组合一样吧,谁给一个详细实现方式的例子
作者:
Kristy_Li
时间:
2012-6-11 18:26
C++中的组合好像用的比较多
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2