在面向对象的中,类与类之间存在三种关系:依赖关系、组合关系、继承关系。
1、依赖关系:
将一个类的类名或对象当做参数传递给另一个函数被使用的关系就是依赖关系
class People:
def __init__(self,name):
self.name = name
def open(self,bx):
bx.open_door(self)
def close(self,bx):
bx.close_door(self)
class Refrigerator:
def __init__(self,name):
self.name = name
def open_door(self,p):
print(f"{p.name} 打开冰箱")
def close_door(self,p):
print(f"{p.name} 关闭冰箱")
r = People("大魔") # People类实例化一个对象r
aux = Refrigerator("奥克斯") # Refrigerator类实例化一个对象aux
r.open(aux) # 将aux对象当做参数传递给r对象的open方法使用
r.close(aux) # 将aux对象当做参数传递给r对象的close方法使用
2、组合关系:
将一个类的对象封装到另一个类的对象的属性中,就叫组合
class Boy:
def __init__(self,name,g):
self.name = name # self = b
self.g = g # g就是girl类实例化的一个对象内存地址
def eat(self):
print(f"{self.name}和{self.g.age}岁,且{self.g.weight}公斤的{self.g.name}py朋友.一起吃了个烛光晚餐!")
def make_keep(self):
self.g.live(f"{self.g.weight}公斤的{self.g.name}给{self.name}踩背")
class Girl:
def __init__(self,name,age,sex,weight,*args):
self.name = name
self.age = age
self.sex = sex
self.weight = weight
self.args = args
def live(self,argv):
print(f"直播内容:{argv}")
g = Girl("乔毕得",54,"女",220)
b = Boy("太博",g) # 将对象g当做属性封装到b对象的属性中
b.make_keep()
3、继承关系
(1)什么是面向对象的继承
继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。
一般静态的面向对象编程语言,继承属于静态的,意即在子类别的行为在编译期就已经决定,无法在执行期扩充。
(2)程序中 A(B)
<1> A -- 子类,派生类
<2> B -- 父类,基类,超类
当我们写多个类的时候会发现许多问题如