前沿
思考
问题一:两个中有大量重复的代码,是否能够只写一次 ?
问题二: 继承的意义是什么 ?
面向对象的编程带来的好处之一是代码的重用,实现这种重用方法之一是通过继承机制。
继承是两个类或多个类之间的父子关系,子类继承了基类的所有公有数据属性和方法,并且可以通过编写子类的代码扩充子类的功能。
开个玩笑地说,如果人类可以做到儿女继承了父母的所有才学并加以拓展,那么人类的发展至少是现在的数万倍。继承实现了数据属性和方法的重用,减少了代码的冗余度。
那么我们何时需要使用继承呢?如果我们需要的类中具有公共的成员,且具有一定的递进关系,那么就可以使用继承,且让结构最简单的类作为基类。一般来说,子类是父类的特殊化,如下面的关系:
哺乳类动物——>狗——>柯基
特定狗种类继承狗类,狗类继承哺乳动物类,狗类编写了描述所有狗种公有的行为的方法而特定狗种类则增加了该狗种特有的行为。
不过继承也有一定弊端,可能基类对于子类也有一定特殊的地方,如某种特定狗种不具有绝大部分狗种的行为,当程序员没有理清类间的关系时,可能使得子类具有了不该有的方法。
另外,如果继承链太长的话,任何一点小的变化都会引起一连串变化,我们使用的继承要注意控制继承链的规模。
继承
什么是继承?
继承就是让类和类之间转变为父子关系,子类可以直接访问(调用)父类的静态属性和方法。
在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类。
class 类1: #定义父类1
pass
class 类2: #定义父类2
pass
class SubClass1(类1):
# 单继承,基类是ParentClass1,派生类是SubClass
pass
class SubClass2(类1,类2):
# python支持多继承,用逗号分隔开多个继承的类
pass
print(SubClass1.__bases__) # 查看所有继承的父类
print(SubClass2.__bases__)
# ===============
# (<class '__main__.Father1'>,)
# (<class '__main__.Father1'>, <class '__main__.Father2'>)
继承的规则
1、子类继承父类的成员变量和成员方法
2、子类不继承父类的构造方法,能够继承父类的析构方法
3、子类不能删除父类的成员,但可以重定义父类成员
4、子类可以增加自己的成员
# python中子类继承父类成员变量之间的取值逻辑
class Person():
def __init__(self, name, age, sex):
self.name = "jasn"
self.age = '18'
self.sex = sex
def talk(self):
print("i want to speak something to yo!!")
class Chinese(Person):
def __init__(self, name,