面向对象三大特性
本章概述:python基础——面向对象三大特性
面向对象编程有三大特性,分别为封装、继承和多态。这篇博客主要是讲这三大特性。
1、封装
封装很容易理解,就是把类中的方法隐藏起来,我们不需要关注类中的方法是怎么写的,我们只需要知道怎么去调用类的方法就可以了。像现在网站有很多的这种API接口,我们用这些api接口可以很方便的实现我们想要的功能,比如查询天气等等,但是这种api接口内部的代码是怎样的,我们肯定是不知道的,我们只知道API的名字以及所需要的参数,这种就是封装。
python把面向对象发挥到了极致,一切皆对象并不是说说而已,前面所说的数据类型——字符串、列表等等,实际上也是对象,这些对象并不需要我们去自定义类,python已经黑我们内置好了。
2、继承
面向对象的编程语言支持在已有类的基础上创建新类,从而减少重复代码的编写。提供继承信息的类叫做父类(超类、基类),得到继承信息的类叫做子类(派生类、衍生类),这就是继承,继承指的是事物之间的所属关系,在python中,每一个类默认都会继承object这个父类。继承只能继承公有的不能继承私有的属性或方法。
举个例子,我们定义狗和猫两个类,我们会发现这两个类有些行为是一样的,而这些一样的行为都是作为狗和猫的公共属性或行为,这个时候,我们可以先定义动物这个类,然后再定义狗和猫,并且继承动物类,这些公共属性或行为是属于动物这个类的。
1 | class Animal(object): |
继承的语法是在定义类的时候,在类名后的圆括号中指定当前类的父类。如果定义一个类的时候没有指定它的父类是谁,那么默认的父类是object
类。object
类是Python中的顶级类,这也就意味着所有的类都是它的子类,要么直接继承它,要么间接继承它。Python语言允许多重继承,也就是说一个类可以有一个或多个父类。在子类的初始化方法中,我们可以通过super().__init__()
来调用父类初始化方法。子类继承父类的方法后,还可以对方法进行重写(重新实现该方法),不同的子类可以对父类的同一个方法给出不同的实现版本。
1 | class Person: |
3、多态
多态是指同一个方法调用由于对象不同可能会产生不同的行为。重写父类的方法会表现出多态行为,调用相同的方法,做了不同的事情。所以多态的存在有2个必要条件:继承、方法重写。