11、继承和组合的特点和区别?在你项目里面如何使用的?

类继承和对象组合是复用的两种最常用的技术。

一:继承

继承是Is a 的关系,比如说Student继承Person,则说明Student is a Person。继承的优点是子类可以重写父类的方法来方便地实现对父类的扩展。

继承的缺点有以下几点:

①:父类的内部细节对子类是可见的。

②:子类从父类继承的方法在编译时就确定下来了,所以无法在运行期间改变从父类继承的方法的行为。

③:如果对父类的方法做了修改的话(比如增加了一个参数),则子类的方法必须做出相应的修改。所以说子类与父类是一种高耦合,违背了面向对象思想。

二:组合

组合也就是设计类的时候把要组合的类的对象加入到该类中作为自己的成员变量。

组合的优点:

①:当前对象只能通过所包含的那个对象去调用其方法,所以所包含的对象的内部细节对当前对象时不可见的。

②:当前对象与包含的对象是一个低耦合关系,如果修改包含对象的类中代码不需要修改当前对象类的代码。

③:当前对象可以在运行时动态的绑定所包含的对象。可以通过set方法给所包含对象赋值。

组合的缺点:①:容易产生过多的对象。②:为了能组合多个对象,必须仔细对接口进行定义。

由此可见,组合比继承更具灵活性和稳定性,所以在设计的时候优先使用组合。只有当下列条件满足时才考虑使用继承:

子类是一种特殊的类型,而不只是父类的一个角色
子类的实例不需要变成另一个类的对象
子类扩展,而不是覆盖或者使父类的功能失效

1.为什么使用组合关系

继承关系: 子类可以继承到父类中部分的成员,那么此时子类是可以修改到父类的信息的.
继承关系破坏封装,为了复用代码可能会让子类具有不该具有的功能.

为什么引入继承: 为了代码复用问题.
解决代码复用问题,不一定非要使用继承,也可以使用”包含关系”(has A).
在这里插入图片描述
上述代码虽然可行,但是存在的问题就是子类继承父类的sort()方法时同时还继承了其他的不需要的功能

在这里插入图片描述上述代码CombinationDemo1类使用组合关系,引入ArrayUtil类,而没有继承它,但是也能使用它的方法,所以这样就不会拥有ArrayUtil中的不必要的功能

2.什么时候用继承关系什么时候用组合关系
如果A类为了得到B的功能行为:
如果A类是B类的一种特殊情况,比如动物和狗我们就应该采用继承来实现.
否则使用组合方式.

原文:https://blog.csdn.net/yangying496875002/article/details/73245097

多态和继承是面向对象编程中的两个重要概念,它们之间存在联系和区别。 联系: 1. 多态和继承都是面向对象编程的特性。 2. 多态和继承都能够提高代码的重用性和可维护性。 3. 多态和继承都能够实现代码的灵活性和扩展性。 区别: 1. 继承是指一个类(子类)继承另一个类(父类)的属性和方法,通过继承可以实现代码的重用。而多态是指同一个方法在不同的对象上有不同的表现形式,通过多态可以实现代码的灵活性。 2. 继承是一种静态的关系,类之间的继承关系在编译时就已经确定,而多态是一种动态的关系,多态的表现形式在运行时才确定。 3. 继承是一种单向关系,子类可以继承父类的属性和方法,但父类不能继承子类的属性和方法。而多态是一种相互关系,多个类可以实现同一个接口或继承同一个父类,并且可以以父类的形式调用子类的对象。 总结: 继承是一种实现代码重用的方式,通过继承可以将公共的属性和方法提取到父类中,子类可以继承父类的属性和方法,并且可以在子类中添加新的属性和方法。而多态是一种实现代码灵活性和扩展性的方式,通过多态可以让同一个方法具有不同的表现形式,提高了代码的可扩展性和可维护性。继承和多态可以结合使用,通过继承实现代码的重用,通过多态实现代码的灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值