面向对象编程具有三大特性--封装性、继承性和多态性、这些特性使程序涉及具有良好的扩展性和健壮性,
1、 继承
继承,是一种对类进行分层级划分的 概念,继承的基本思想是在一个类的基础上制定出一个新的类,这个新的类不仅可以继承原来类的属性和方法,还可以增加新的属性和方法,原来的类被成为父类,新的类被称为子类。
举个简单例子。 如图,展示了公司和不同行业公司之间的关系。
在图中,公司类具有法人属性和注册公司两个成员,互联网公司类和猎头公司类都有法人和注册公司,除此之外,还分别有研发部门、财务部门、研发项目、提供市场信息等各自的成员。这三个类中,公司类是父类,具有通用的属性和方法,互联网公司和猎头公司都是公司的子类,继承了父类的法人和注册公司,并且还各自具有自定义的属性和方法。
一般情况下,编程语言没有限制一个类可以继承的父类数量,一个子类可以有多个父类,如图:
有些语言例如Java、PHP等不支持多重继承,但是Python是支持多重 继承的,一个子类可以继承多个父类,有的语言例如Java、PHP等有接口(Interface)和抽象类(Abstract Class) 等概念,Python中也有相应的概念,但是语法本身不直接提供,(例如abc模块中有提供abstractmethod 等等)。
在Python中定义子类也很简单,父类就和一般定义类一样,定义子类的语法如下:
class SubClass(BaseClass1, BaseClass2):
语法块
定义要从那个父类继承,只需在定义子类的名字后面的括号中填入父类的名字,如果有多个父类则用逗号“,” 隔开。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- class Animal: def __init__(self, name): self.name = name def play(self): print ("我是", self.name) class Dog(Animal): pass dog = Dog("汉王") dog.play()
执行结果如下:
我是 汉王</