组合
软件重用的重要方式除了继承之外还有另外一种方式,即:组合
组合指的是,在一个类中以另一个类的对象作为数据属性,称为类的组合。
组合与继承都是有效利用已有类的资源的重要方式。但是二者的概念和使用场景皆不同:
1.继承的方式
通过继承建立了派生类与基类之间的关系,他是一种“是”的关系,比如 白马是马,人是动物。
当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好,比如老师是人,学生是人
2.组合的方式
用组合的方式建立了类与组合的类之间的关系,他是一种“有”的关系,比如 教授有生日,教授授python和linux课程,教授有学生s1, s2, s3...
示例代码:
class Teacher:
def __init__(self, name, sex, course):
self.name = name
self.sex = sex
self.course = course
class Student:
def __init__(self, name, sex, course):
self.name = name
self.sex = sex
self.course = course
class Course:
def __init__(self, name, price, period):
self.name = name
self.price = price
self.period = period
python_obj = Course("python", "15800", "7m")
t1 = Teacher("egon", "male", python_obj)
s1 = Student("alex", "male", python_obj)
print(t1.course.name)
print(s1.course.name)
输出:
python
python
总结:
当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。
共有 0 条评论