今天给大家介绍一下什么是面向对象。
我们都知道python是面向对象的程序设计,那什么是面向对象?
面向对象的程序设计的核心是对象。简单的理解对象的话,就是把自己当作上帝,上帝眼里世间存在的万物都是对象,不存在的也可以自己创造。
不管是面向对象还是面向过程,都有自己的优点,面向对象的优点是解决了程序的扩展性,对某一个对象的单独修改会立刻反映导整个体系中,例如对游戏中一个人物参数的特征和技能修改都很容易(因为你是上帝,你想怎么改就怎么改)
我们先来了解python中的类和对象
- 类:具有相同特征的一类事物(人,猫,狗)
写法:class 类名:
属性
方法
类的命名: 首字母大写,以大小写分割单词,不使用下划线。
定义一个类(如下图):
- 对象:具体的某一事物(张三,楼下小黑)
万物皆对象
属性:用来描述操作对象,属性名首字母小写,以大写字母分割单词
创建对象属性(如下图):
然后来了解面向对象的三大特征:
- 继承
----单继承
----多继承
- 封装
- 多态
1.继承:是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类有称为基类或超类,新建的类称为子类或派生类
python中的继承分为单继承和多继承(如下图):
查看继承:
SubClass1.__bases__ ----------------__base__只查看从到右继承的第一个子类,__bases__查看所有继承的父类
注意:如果没有指定父类,python的类会默认继承object类,object是所有python的父类,它提供了一些常见的方法(如__str__)的实现。
2.封装
python的三种封装写法:
- 常规写法:
属性私有 _属性名称
- 调用全局函数property,将set和get传递过去:
对象.属性名称
- 使用annotation(注释)property;来二次封装(注意:此处存在一个伪重载):
函数的重载(overload):
- 函数名称相同,参数的个数或类型不同
注:python没有函数重载,因为python是弱数据类型语言
函数的重写/覆盖(override):
- 是指面向对象的继承中,子类继承了父类的方法,但是不满足子类的需求,从而重新覆盖父类的现象
3.多态
- 父类引用指向子类实例的现象,叫做多态。
注意:python 是弱数据语言,弱数据类型语言天生支持多态