一. 面向对象和面向过程
1. 面向过程: 一切以实物的流程为中心,核心是"过程二字", 过程是指解决问题的步骤
优点: 负责的问题流程化, 编写相对简单
缺点: 可扩展性差
2. 面向对象: 一切以对象为中心
具有相同属性和动作的结合体叫对象, 面向对象思维, 要自己建立对象, 自己建立场景
优点: 可扩展性强
缺点: 编程的复杂性高于面向过程
二. 面向对象如何编写
举例: 创建一个猫类
class Cat: # 创建一个猫类
def __init__(self, name, age, color): # 初始化方法, 又称为构造方法
self.name = name # 名字属性
self.age = age # 年龄属性
self.color = color # 颜色属性
def eat(self): # 定义猫类吃的方法
print("吃鱼")
def run(self): # 定义猫类跑的方法
print("四只腿跑")
c1 = Cat("加菲猫", "5", "花") # 创建c1对象, 又称为实例化
print(c1.name) # 访问对象的属性信息
c1.eat() # 访问类中的方法
c2 = Cat("TOM", "3", "灰") # 创建c2对象
类和对象的关系:
类是对事物的总结, 抽象的概念, 类用来描述对象
对象是类的实例化的结果, 对象能执行哪些方法, 都由类来决定, 类中定义了什么, 对象就拥有什么
三. 面向对象和面向过程的比较
如果写一些比较小的程序用面向过程
当程序很复杂, 很庞大用面向对象
四. 面向对象三大特征: 封装, 继承, 多态
1. 封装: 把很多数据封装到一个对象中, 把固定功能的代码封装到一个代码块, 函数, 对象, 打包成模块,这都属于封装的思想. 在面向对象思想中, 把一些看似无关紧要的内容组合到一起统一进行存储和使用, 这就是封装.
2. 继承: 继承指的是类与类之间的关系, 继承的功能之一即是解决代码的重用问题.
def ParentClass1:
pass
def ParentClass2:
pass
class SubClass1(ParentClass1):
pass
class SubClass2(ParentClass2):
pass
当出现xxx是yyy类型的一种的时候, 可以使用继承关系
子类自动继承父类除了私有内容以外其他所有的内容
python支持多继承, 用逗号分隔开多个继承的类
类中方法的查询顺序: 先找自己, 然后再找父类
方法的覆盖(重写): 子类中有和父类中一样的方法
3. 多态
多态: 一类事物有多种形态
好处: 程序具有超高的可扩展性, 面向对象思想的核心与灵魂, python中自带多态