《码出高效:Java开发手册》第2章 面向对象


“一树一菩提,一‘门’一世界。” 一切皆对象,万物有三问:我是谁?我从哪里来?我到哪里去?


当前主流编程语言有 50 种左右,主要分为两大阵营:面向对象编程与面向过程编程。

面向对象编程( Object-Oriented Programming, OOP )是划时代的编程思想变革,推动了高级语言的快速发展和工业化进程。 OOP 的抽象、封装、继承、多态的理念使软件大规模化成为可能,有效地降低了软件开发成本、维护成本和复用成本。 OOP 实践了软件工程的三个主要目标:可维护性、可重用性和可扩展性。

2.1 OOP 理念

面向对象提出一种计算机世界里解决复杂软件工程的方法论,拆解问题复杂度,从人类思维角度提出解决问题的步骤和方案。

传统意义上,面向对象有三大特性:封装、继承、多态。本书明确将“抽象”作为面向对象的特性之一,支持面向对象“四大特性”的说法。

  • 抽象是程序员的核心素质之一,体现出程序员对业务的建模能力,以及对架构的宏观掌控力。
  • 封装是一种对象功能内聚的表现形式,使模块之间耦合度变低,更具有维护性。
  • 继承使子类能够继承父类,获得父类的部分属性和行为,使模块更有复用性。
  • 多态使模块在复用性基础上更加有扩展性,使系统运行更有想象空间。

抽象是面向对象思想最基础的能力之一,正确而严谨的业务抽象和建模分析能力是后续的封装、继承、多态的基础,是软件大厦的无形基石。

在面向对象的思维中,抽象分为归纳和演绎。

  • 归纳:从具体到本质,从个性到共性,将一类对象的共同特征进行归一化的逻辑思维过程;
  • 演绎:从本质到具体,从共性到个性,逐步形象化的过程。

Java 之父 Gosling 设计的 Object 类,是任何类的默认父类。

  • 我是谁?getClass() 说明本质上是谁,而 toString() 是当前我的名片。
  • 我从哪里来?Object() 构造方法是生产对象的基本方式, clone() 是繁衍对象的另一种方式。
  • 我到哪里去?finalize() 是在对象销毁时触发的方法。