继承
- 实现继承, 可以通过"继承"(Inheritance) 和 "组合"(Composition) 来实现.
- 在某些语言中, 一个子类可以继承多个基类, 但是一般情况下, 一个子类只能有一个基类, 要实现多重继承,可以通过多级继承来实现.
继承概念的实现方式主要有两类:
- 实现继承
- 实现继承是指使用基类的属性和方法而无需额外编码的能力
- 接口继承
- 接口继承是指仅使用属性和方法的名称, 但是子类必须提供实现的能力(子类重构父类方法)
- 注意:
- 在考虑使用继承时, 有一点需要注意, 两个类之间的关系应该是"属于"关系. 例如, employee是一个人, manager也是一个人. 因此这两个类都可以继承person类, 但是leg却不能继承person类.
- 抽象类仅定义将由子类创建的一般属性和方法
OO开发范式大致为:
- 划分对象 -> 抽象类 -> 将类组织成为层次化结构(继承和合成) -> 用类与实例进行设计和实现几个阶段
#!/usr/bin/python # -*- coding: utf-8 -*- # 直接继承父类方法 class Person(object): def talk(self): print("person is talking") class BlackPerson(Person): pass b = BlackPerson() b.talk() # 子类自己有独有方法 class Person(object): def talk(self): print("person is talking") class BlackPerson(Person): def walk(self): print("BlackPerson is walking") b = BlackPerson() b.talk() b.walk() # 子类重写父类方法 class Person(object): def talk(self): print("person is talking") class BlackPerson(Person): def talk(self): print("BlackPerson is talking") def walk(self): print("BlackPerson is walking") b = BlackPerson() b.talk() b.walk() # 传参 class Person(object): def __init__(self, name, age): self.name = name self.age = age def talk(self): print("person is talking") class BlackPerson(Person): def talk(self): print("BlackPerson is talking") def walk(self): print("BlackPerson is walking") class WhitePerson(Person): pass b = BlackPerson("will smith", 30) b.talk() b.walk() # 先继承,再重构 class Person(object): def __init__(self, name, age): self.name = name self.age = age self.sex = "normal" def talk(self): print("person is talking") class BlackPerson(Person): def __init__(self, name, age, strength): # 先继承,再重构 Person.__init__(self, name, age) # 把子类实例传到父类(父类引用指向子类对象) print(self.name, self.age, self.sex) print(strength) def talk(self): print("BlackPerson is talking") def walk(self): print("BlackPerson is walking") class WhitePerson(Person): pass b = BlackPerson("will smith", 30, "strong") b.talk() b.walk()