面试题答案
一键面试区别
- 组合(Composition):表示一种强“拥有”关系,整体和部分的生命周期紧密相关。部分不能脱离整体而单独存在,整体销毁时,部分也随之销毁。
- 聚合(Aggregation):表示一种弱“拥有”关系,整体和部分的生命周期可以相互独立。部分可以在不同的整体中复用。
代码示例
组合
class Engine:
def __init__(self, power):
self.power = power
class Car:
def __init__(self, brand, power):
self.brand = brand
self.engine = Engine(power)
car = Car('Toyota', 200)
在上述代码中,Car
类包含Engine
类的实例作为其组成部分。Engine
实例的生命周期完全依赖于Car
实例。当Car
对象被销毁时,Engine
对象也不再存在。
聚合
class Department:
def __init__(self, name):
self.name = name
class Employee:
def __init__(self, name, department):
self.name = name
self.department = department
department = Department('Engineering')
employee = Employee('John', department)
在这段代码中,Employee
类聚合了Department
类的实例。Department
实例可以独立于Employee
实例存在,并且可以被多个Employee
实例复用。