目录
一、面向对象(OOP--Object Oriented Programming)
——把解决问题的事物分为多个对象 ,对象具备解决问题过程中的行为
面向对象编程有两个非常重要的概念:类和对象
对象是面向对象编程的核心,具有相似特征和行为的事物的集合统称为类(class)。对象是根据类创建的,一个类可以对应多个对象
——把客观事物抽象并封装成对象(将某些部分隐藏起来,在程序外部看不到,无法调用)
为了安全考虑,往往需要将对象的属性就行私有化,提供对应的访问方式 ,即封装。
封装离不开私有化,私有化是指将某个对象限定在某个自己认定的范围内
私有化的方法:将准备私有化的属性对象前面加双下划线__
如属性name
--> __name,
方法eat
--> __eat
get和set方法:
将属性私有化后,可以提供公开的get和set方法。来合法的访问和修改私有化的属性
python中,如果使用
_
来修饰属性或者成员、变量。表示该属性不能被其他模块使用!!!
——解决代码复用问题
面向对象中,类与类之间也存在着一种继承关系。
被继承的类:父类、超类(super class)、基类
继承类:子类
当子类继承父类时,该子类会自动的继承父类中能被继承的成员
私有的类成员,无法被子类继承。
python中,若子类存在初始化函数,一定要在有效代码的第一行首先手动调用父类的初始化
在python,可以实现多继承,通过逗号,可以实现多继承。
class 类名称([父类1 [, 父类2……]]): pass
——在继承的基础上,父类引用指向子类实例的现象,被称为多态
python天生支持多态,时刻体现着多态
- List # 线性表 总类
-
- ArrayList # 基于数组实现的一个线性表 ArrayList 继承了 List
-
- ArrayList ls = new ArrayList(); // 创建一个ls对象
-
- # 可以使用多态实现
- List ls = new ArrayList();
存在多个同名称的函数,函数名称相同,参数的个数或者类型不同,从而在调用时,会自动调用对应方法的这种现象,叫做函数重载。
python是弱数据类型编程语言,所以不存在函数重载!!!
最终,只能保留最后一个同名称函数。
如果一定要实现重载,则可以通过装饰器等手段想办法实现
函数重载(overload)、函数重写(overwrite)、函数覆盖(override)的区别
函数重载(overload):函数名称相同的一批函数,函数的参数和类型不同,从而引起调用时,会调用对应函数的现象。
函数重写(overwrite)|函数覆盖(override):在继承的基础上,如果子类继承了父类的某些或者某一个方法,发现某一个方法难以满足自身使用时,就会重写这个方法。