可爱的小朋友们,今天我们一起来学习面向对象鸭~
01
什么是类?
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。类是创建实例的模板,对象是类的实例。
02
什么是对象?
对象是由类创造出来的变量,它可以调用类里面的所以函数(方法),效果就像函数的函数名,可以操作函数一样。
03
面向过程和面向对象的区别?
举个简单的例子来区分面向过程和面向对象
有一天你想吃瘦肉米粉了,怎么办呢?这时你有两个选择
1、自己去超市买米粉,瘦肉,青菜,火腿,瘦肉米粉调料等然后洗菜切肉,开始汤米粉,**后装到碗里。
2、去学校饭堂,张开嘴:老板!来一份瘦肉米粉!
看出来区别了吗?这就是1是面向过程,2是面向对象
面向对象有什么优势呢?首先你不需要知道瘦肉米粉是怎么做的,降低了耦合性。如果你突然不想吃瘦肉米粉了,想吃牛肉米粉,对于1你可能不太容易了,还需要重新买牛肉,买牛肉调料什么的。对于2,太容易了,大喊:老板!那个瘦肉米粉换成牛肉米粉吧,提高了可维护性。总的来说就是降低耦合,提高维护性!
面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。
面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现。
04
面向对象的三大特性
封装
封装是隐藏对象的属性和实现细节,仅对外提供公共访问方式,提高复用性和安全性,是一种信息隐蔽化技术。
比如:python的列表是一个对象,它提供了若干种方法,供我们根据需求来调整整个列表。但我们不知道列表对象的这些方法是如何实现的,也不知道列表有哪些对象,这就是封装。
我们只需要根据需求调用方法就可以实现了。
但它具体怎么实现的,没有告诉我们,这是封装。
案例:class Student: def __init__(self,name,age): #构造方法 self.name=name self.age=age
#创建对象student1,student2student1=Student("xiaoming",20)student2=Student("xiaohong",21)print (student1.name,student1.age)print (student2.name,student2.age)
继承
子类自动共享父类之间的数据和方法的机制
>>> class MyList(list):# MyList继承list的属性和方法pass
>>> list2=MyList()#实例化对象赋值给变量List2>>> list2.append(5)>>> list2[5]>>> list2.append(9)>>> list2.sort()>>> list2[5, 9]
多态
多态指的是父类的引用指向子类的对象,不同对象对同一方法响应不同的结果
>>> class A:def fun(self):print('我是小A')
>>> class B:def fun(self):print('我是小B')
>>> a=A()>>> b=B()>>> a.fun()我是小A>>> b.fun()我是小B>>>


