python面向对象进阶-03类的组合
类的组合
什么是组合
组合就是一个类的对象具备某一个属性,该属性的值是指向另外外一个类的对象
大白话理解:也是一种关系,描述两个对象之间 是什么有什么的关系
将一个对象作为另一个对象的属性,(既什么有什么)
组合可以理解成多个人去造一个机器人,有的人造头、有的人造脚、有的人造手、有的人造躯干,大家都完工后,造躯干的人把头、脚、手拼接到自己的躯干上,因此一个机器人便造出来了
为什么用组合(组合和继承的比较)
也是为了重用现有代码
什么时候使用继承:分析两个类的关系,到底是不是:什么是什么的关系
什么时候使用组合:如果两个类之间 没有太大的关系,完全不属于同类
另外组合相比继承,耦合度更低了
组合是用来解决类与类之间代码冗余的问题!!!!!!!!!!!!!!!
怎么用组合
大白话解释: 比如两个不同的类 入下面列子 一个学生和手机的故事.这2个没有共同点,但是学生有要一个手机的需求,这时候可以把手机类创建出的一个手机对象做为创建学生的对象需要的一个参数, 这样就实现了两个不同完全没有共性(不存在任何继承关系)对象实现了两者的交互. 组合就是用来解决类和对象遇到这种问题的这种场合!!!!!
Ps: 同时组合的 耦合性相较与 类的继承的耦合性更低!
两者无关的场景一定要用组合来解决问题!
class Phone:
def __init__(self,price,kind,color):
self.price = price
self.kind = kind
self.color = color
def call(self):
print("正在呼叫XXXX;")
def send_message(self):
print("正在发送短信....")
class Student:
def __init__(self,name,gender,phone):
self.name = name
self.gender = gender
self.phone = phone
def show_info(self):
print("name:%s gender:%s" % (self.name,self.gender))
phone = Phone(1000,"apple","red")
stu1 = Student("rose","male",phone)
stu1.phone.call()