面向对象编程范式
# 面向对象编程
面向对象编程(Object Oriented Programming,OOP)
两个基础且重要的概念:类(class)、对象(Object)
面向对象编程是一种编程方式或编程风格。它以类或者对象作为组织代码的基本单元,并以封装、抽象、继承、多态 4 个特征作为代码的设计和实现的基石。
# 面向对象编程语言
只要某种编程语言支持类或者对象的语法概念,并且以此作为组织代码的基本单元,就可以简单地认为它是面向对象编程语言。
# 四大特征
# 封装(易维护性)
封装也称为信息隐藏或信息访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式(或者称为函数)来访问内部信息或数据。
笔记
类将成员属性设为 private
,使用 get、set 方法向外暴露信息,对于只读、只写方法可省略对应 get、set 方法,即达到封装目的。
# 抽象(扩展性)
抽象是隐藏方法的内部实现,让调用者只需要关心方法提供了什么功能,并不需要知道这个功能是如何实现的。
抽象特征不一定需要依赖接口或者抽象类这些特殊的语法机制,因为类中的方法是通过编程语言中的 “函数” 这一语法机制实现的。通过函数包裹具体的实现逻辑,这本身就是一种抽象。
在定义(或称为命名)类的方法时,不要在方法的定义中暴露太多的实现细节,以保证在未来的某个时间点,需要改变方法的实现逻辑时,不需要修改方法的定义。
// 正例
getPictureUrl();
// 反例
getAliyunPictureUrl();
由于函数本身就是抽象的,调用者无需关心函数的实现,因此面向过程编程也具备抽象的特征,但面向对象编程还有其他的实现方式,如 ** 基于接口的抽象,可以在不改变原有实现的情况下,替换新的实现逻辑,提高了代码的可扩展性 **。
# 继承(复用性)
继承的最大作用是代码复用。假如两个类有一些相同的属性和方法,可以将这些相同的部分抽取到父类中,让两个子类继承父类,两个子类就可以复用父类中的代码,避免重复编写相同的代码。
# 多态
多态是指,在代码运行过程中,我们可以用子类代替父类,并调用子类的方法。
实现多态语法机制:
- 父类对象引用子类对象
- 支持继承
- 子类重写(override)父类中的方法
- 接口语法
- duck-typing 语法(一些动态语言支持)
作用:
- 提高代码的可扩展性
- 提高代码的复用性