请稍候,加载中....

类的继承

通过类,我们将同一类事物抽象化,然后可以通过实例化,创建出一个个具有不同特征值的对象,由于同一类事物具有相同的特征,因此,对于同类事物而言,我们不需要再分别写代码,只要进行不同参数的实例化就可以,从而提高了代码的组织性与可重用性。

有的时候,同一类事物还可以再分,比如人类分为男人、女人,汽车分为新能源车、燃油车,会员可以分为普通会员,付费会员, 对于这样的分类,我们也可以在大类的模版基础上,做一些细微的修改,创建一个新的模版,这种方式就是继承,可以让代码更加高度组织化,封装,并降低代码的冗余.

继承是在一个类的基础上创建一个新类,这种机制就叫继承

原来的类叫基类或者父类或者超类,新创建的类叫子类或者派生类

新类会从基类那里继承基类的所有属性与方法

所有的类都来源于object类,称为根类

Python类继承语法

class ChildClassName(ParentClassName1, ParentClassName2....):
    pass

Python类的继承示例

创建基类

# 男人、女人的都属于人类
# 创建一个Person基类
class Person:
    legs = 2
    sex = None
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def eat(self):
        print("人是铁,饭是钢,一天不吃饿的慌!")

通过继承创建子类

# 男人类
# 通过在定义类的时候,()内写入父类名称即可从父类继承属性
# 男人类与女人类都是继承自Person类,只是各自有一个不同的值的sex
class Man(Person):
    sex = "男"

# 女人类
# 另外重新定义了eat
class Woman(Person):
    sex = "女"
    def eat(self):
        print("细嚼慢咽")

子类实例化

现在通过创建Man与Woman两个类,就可以不用传sex了

# 直接实例化Man、Woman
zhangsan = Man("张三", 30)
cuihua = Woman("翠花", 18)

#子类属性继承

# 子类会继承所有来自父类的属性
print(zhangsan.legs)
print(cuihua.legs)

# 子类属性覆盖了父类的同名属性
print(Person.sex)
print(Man.sex)
print(Woman.sex)
print(zhangan.sex)
print(cuihua.sex)

子类方法重写

我们观察两个子类,他们都分别再次定义了eat这个方法,在父类中存在同样的方法名,这种叫方法重写,通过方法重写,可以实现代码的灵活行,现在两个类分别重写了eat方法后:

# 子类方法重写提高了封装代码的灵活性
zhangsan.eat()
# 输出 “狼吞虎咽”
cuihua.eat()
# 输出"细嚼慢咽"

# 重写Man的eat方法
class Man(Person):
    sex = "男"
    def eat(self):
        print("狼吞虎咽")

# 实例化
zhangsan = Man("张三", 30)
print("zhangsan吃饭的样子:", zhangsan.eat())

子类继承练习

看是看不会的,这辈子都看不会,请将代码撸起来!

# 鸟类的特征包括:有一对翅膀、有一对脚、会叫
# 鸽子的叫声:咕咕, 脚的形状:无蹼
# 鸭子的叫声:嘎嘎, 脚的形状:有蹼

# 使用继承关系来描述他们

Python学习手册-