面向对象到底是什么

2020-06-29

面向对象编程

  • OOP,全称 Object Oriented Programming
  • 两个基础概念:类(class)和对象(object)
  • 一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石

 

面向对象编程语言

  • OOPL,全称 Object Oriented Programming Language
  • 支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言

 

对象分析(OOA)Object Oriented Analysis

面向对象设计(OOD)Object Oriented Design

 

面向对象编程和面向对象编程语言之间的关系

  • 不用面向对象编程语言,照样可以进行面向对象编程
  • 使用面向对象编程语言,写出来的代码也不一定是面向对象编程风格

 

面向对象编程的优势

  • 更能应对大规模复杂程序的开发,程序的处理流程并非单一的一条主线,而是错综复杂的网状结构
  • 具有更加丰富的特性(封装、抽象、继承、多态)。利用这些特性编写出来的代码,更加易扩展、易复用、易维护
  • OOP 语言更加人性化、更加高级、更加智能

 

三大特性 or 四大特性

封装、抽象、多态  or  封装、抽象、继承、多态

 

封装

也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。它需要编程语言提供权限访问控制语法来支持,例如 Java 中的 private、protected、public 关键字。封装特性存在的意义,一方面是保护数据不被随意修改,提高代码的可维护性;另一方面是仅暴露有限的必要接口,提高类的易用性。

 

抽象

主要讲如何隐藏信息、保护数据,那抽象就是讲如何隐藏方法的具体实现,让使用者只需要关心方法提供了哪些功能,不需要知道这些功能是如何实现的。抽象可以通过接口类或者抽象类来实现,但也并不需要特殊的语法机制来支持。抽象存在的意义,一方面是提高代码的可扩展性、维护性,修改实现不需要改变定义,减少代码的改动范围;另一方面,它也是处理复杂系统的有效手段,能有效地过滤掉不必要关注的信息。

 

继承

表示类之间的 is-a 关系,为了实现继承这个特性,编程语言需要提供特殊的语法机制来支持,继承主要是用来解决代码复用的问题。

 

多态

子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现。多态这种特性也需要编程语言提供特殊的语法机制来实现,比如继承、接口类、duck-typing。多态可以提高代码的扩展性和复用性,是很多设计模式、设计原则、编程技巧的代码实现基础。

 

典型的非面向对象代码

ConstXiong 备案号:苏ICP备16009629号-3