序列分装了数据,函数封装了代码语句,类封装了属性和方法;类是对象的抽象,对象是类的实例化,python中万物皆对象,我们将拥有共同特征的对象归为一类,将他们的特点抽象成属性,行为动作抽象成方法。比如一个人类,属性有肤色(color),身高(hight),体重(weight),行为有游泳(swim),打篮球(basketball);
我们创建了一个人类,并创建p1和p2两个人,他们都为黄皮肤,170cm,80kg,p1在游泳,p2在打篮球;
人类了肤色,身高,体重不可能都是一样的,各有各的差异;学过java的同学一定会想到构造函数,python的构造函数又是怎样呢;
如图中所示,我们对Person类进行了升级,有了自己的构造方法,可以随意修改一个人的肤色,身高,体重了;
面向对象编程肯定会涉及到共有,私有属性,python属性默认为共有,私有属性只要在属性名前加两个下划线__color,color就成为了私有属性;
虽然都是人,但人与人之间也有差异,比如中国人的特点是说汉语,美国人的特点是说英语,但无论如何都是人;类的继承,中国人属于人类的子类,人类就是中国人的父类,子类继承父类的全部属性和方法;
图中两个类Chinese和American都继承了Person类,所以他们拥有了肤色,身高,体重的属性,并拥有了游泳和打篮球的技能,同时他们有各自的特点,就是语言不同;
面向对象编程的特点就是封装,继承和多态;将属性和方法封装便成了一个类,一个类继承自另一个类,子类拥有了父类的全部属性和方法,就是继承,子类可以对父类的属性和方法进行扩展,即为多态,而多态的实现分为,重载和重写;
图中American重写了父类的basketball()方法,将在“打篮球”改为“喜欢打篮球”,又将basketball()方法重载,加入了name;
(重写,重载是java中的概念)
多重继承,一个子类可以继承多个父类,中国人即属于人类,也属于动物类
p1及拥有Person中的swim()方法,同时也拥有Anamal中的eat()方法