面向对象:
是一种程序设计范型
作用: 提高软件的重用性和灵活性,扩展性
世界万物一切皆为对象,对象即是指由特定状态,特征,行为的实体
知识点一: 代码的重用
举个栗子
比如小月月有了一个女朋友1,因为一些其他原因,这个女朋友1离开了,不久以后,小月月又
找到了一个女朋友2,那么这个女朋友2和女朋友1肯定是有一些基本的共性的 ,比如走路,
是个女性,都有自己的名字,这时候,如果小月月是个富二代,他想找个小三,小三也具有
这些基本的共性,所以他就可以很快的new出来一个小三,只需要在此基础上添加额外自己想要
就可以了,我们把这些基本的功能写成代码这个时候
注意了:
通过面向对象,就可以实现一些基本功能的多次调用
疑点:通过函数式编程好像也可以实现类似代码重用的功能?
但是自己写的代码有时候需要传入一个参数,来告诉这个代码是谁在调用它,不然以前的去女朋友1来调用
这段代码的时候,你都不知道,想想是一件很恐怖的事情,所以通过面向对象就不需要传入参数 可以直接
调用,面向对象会自己识别,是谁在调用这段代码......
知识点二:代码的继承和封装
小月月是东北人 ,小月月生活的很幸福,他们生了一个boby,小月月当父亲了,这个boby会有一些地方
像小月月对吧 , 因为他是小月月的孩子嘛,帅气的外表,智慧的大脑 ,好了
注意了:
这个时候通过面向对象把小boby封装起来,继承小月月的(比如东北话)代码属性
疑点: 函数式编程可以实现啊 ,为什么要用面对象呢?
函数式编程是通过字典的形式把这种父与子的关系写入到内存中,然后来实现继承一些代码属性,
所以写在内存中,这就允许了任何人都可以来改动,当然在我们现实生活中这是不允许的
而面向对象会把这个小boby封装起来,可以正常调用,并且保持继承的关系 外面的人不知道怎么实现的,
是改动不了的,所以你懂了....
知识点三: 多态
一个人可以对于吃来说,可以有不同的形式
比如说你可以站着吃饭 ,你也可以坐着吃饭
知识点四:类的定义
class Person(object): #声明了一个类
pass
people_one = Person("bds")
class :是一个抽象的,泛指的东西
Person: 代表所有人,一个物种,人的一些基本的特征 , 比如说名字,血液,毛发,
people_one: 这就是一个生动的现实的人类,是一个对象
一句话: people_one是通过class Person 实例化出来的一个对象
代码演示:
class Person(object):
def __init__(self,name) #初始化函数
self.name = name
def say_name(self):
print "my name is %s" % self.name
p_one = Person("bds")
p_one.say_name()
p_one是Person实例化的一个对象,在实例化对象时 ,就会执行初始化函数,所以比如一些基本的特征,属性
就可以通过初始化函数来定义
理解:什么样的特征需定义self呢?
一个吃的特征,每个人都是一样的,每个人都可以吃,所以这个就是大家共性的,就不需要初始化来区别,但是
比如名字,每个人的都不同的,所以这个name 就需要初始化函数来定义name,来区别每个人。
方法,属性,函数,功能
举个栗子
假如有一个杯子,他有各种各种的属性,长,宽,高,形状
它有一个功能之一是用来装水,我们调用这个装水的动作就叫做方法
函数实现各种功能 调用功能的动作就是方法
函数 --> 功能 --> 方法