Python 继承

继承

  • 实现继承, 可以通过"继承"(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()
继承

猜你喜欢

转载自www.cnblogs.com/cheese320/p/9171751.html