一、继承
1.在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。
注意:python中的继承分为:单继承和多继承。
2.父类:用于被继承的类,称之为父类,也叫做基类,或者超类。
子类:继承其他类的类,称之为子类,也叫做派生类。
3.继承的作用:就是提高代码的重用率。
4.比如,我们已经编写了一个名为People的class,有一个run()方法可以直接打印:
class People(object):
def run(self):
print('People is running......')
当我们需要编写man和woman类时,就可以直接从People类继承:
class man(People):
pass
class woman(People):
pass
对于man来说,People就是它的父类,对于People来说,man就是它的子类。
继承有什么好处?最大的好处是子类获得了父类的全部功能。由于People实现了run()方法,因此,man和woman作为它的子类,什么事也没干,就自动拥有了run()方法:
class People(object):
def run(self):
print('People is running......')
class man(People):
pass
class woman(People):
pass
man=man()
man.run()
woman=woman()
woman.run()
运行结果:
二、多态
我们也可以给子类增加一些方法:
class People(object):
def run(self):
print('People is running......')
class man(People):
def run(self):
print('Man is running......')
def eat(self):
print('Eating meat......')
class woman(People):
def run(self):
print('Man is running......')
def eat(self):
print('Eating meat......')
man=man()
man.run()
man.eat()
woman=woman()
woman.run()
woman.eat()
运行结果:
当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。这样,我们就获得了继承的另一个好处:多态。
多态是指基类的同一个方法在不同派生类对象中具有不同的表现和行为。
多态的好处就是,当我们需要传入更多的子类时,例如eat,我们只需要继承Person类型就可以了,而run()方法既可以不重写(即使用Person的),也可以重写个别特有的。这就是多态的意思。调用方只管调用,不管细节,而当我们新增一种Person的子类时,只要确保新方法编写正确,而不用管原来的代码。
提示:开发时,需要避免这种容易产生混淆的情况!–如果父类之间存在同名的属性和方法,应尽量避免使用多继承。