Java之组合与继承之间的选择

42 篇文章 0 订阅
35 篇文章 0 订阅

我们在学习了组合与继承之后,或许我们想要知道这两者之间的区别在哪呢?应用的时候如何进行选择呢?这是我们这篇文章所要讲述的内容。
首先,我们必须要知道,他们是为了对代码进行复用的两种不同方式,我们先来介绍一下二者的概念:
组合:只需在新的类中产生现有类的对象。新的类是由现有类的对象所组成的。
继承:按照现有类的类型来创建新类,无需改变现有类的形式,并且在其中添加新的代码。

区别:组合是显示地允许在新类中放置子对象,而继承是隐性的这样做。
在某些特定的情况下,我们允许类的用户直接访问新类中的组合成分,即将成员对象声明为public。例如:`

package lession04;
class Engine{
	public void start() {}
	public void rev() {}
	public void stop() {}
}

class Wheel{
	public void inflate(int psi) {}
}

class Window{
	public void rollup() {}
	public void rolldown() {}
}

class Door{
	public Window window=new Window();
	public void open() {}
	public void close() {}
}

public class Car {
	public Engine engine=new Engine();
	public Wheel[] wheel=new Wheel[4];
	public Door
	       left=new Door(),
	       right=new Door();
	public Car() {
		for(int i=0;i<4;i++)
			wheel[i]=new Wheel();
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Car car=new Car();
		car.left.window.rollup();
		car.wheel[0].inflate(72);
	}

}

此例中,car的组合是问题分析的一部分,那么使成员成为public将有助于我们去了解怎样使用这个类。相对来说private更加安全,也是一般情况下我们进行设置的。
输出结果:
在这里插入图片描述
无输出。
一种更加形象的表达是:“is-a”来描述继承,“has-a”来描述组合。

请批评指正,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值