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