跳至主要內容

Java核心思想 - 面向对象编程(OOPL)

流浪码客原创Java大约 3 分钟

Java核心思想-面向对象编程(OOP)

什么是面向对象编程?

发展历史简述

  • 1960 年:类(Class)和对象(Object)的概念首次出现在 Simula 语言中。
  • 1970 年代Smalltalk 引入了“面向对象编程(OOP)”的概念,被认为是第一个真正意义上的 OOP 语言。
  • 1980 年左右C++ 出现,推动了 OOP 的广泛流行。
  • 今天:大多数主流语言都支持 OOP(Java、C++、Python、C#、Ruby、JavaScript、Go、Scala、PHP 等)。

类和对象

面向对象编程中有两个非常重要、非常基础的概念,那就是类(Cass)对象(Object)

  • 类(Class) 是指对某一类事物的抽象描述,包含属性和方法。
  • 对象(Object) 是类的实例,是在程序中具体存在的实体。

核心定义

  • 面向对象编程(OOP, Object-Oriented Programming) 是一种编程范式或编程风格。它以对象作为组织代码的基本单元,并将封装抽象继承多态四个特性,作为代码设计和实现的基石 。
  • 面向对象编程语言(OOPL, Object-Oriented Programming Language) 是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。

四大特性

封装(Encapsulation)

  • 核心思想:隐藏实现、保护数据、对外提供接口
  • 实现方式: 通过 privateprotectedpublic 等权限控制,把属性隐藏起来,通过方法来操作。
  • 意义:
    • 防止数据被随意修改,提高代码的安全性和可维护性
    • 对外只暴露必要的接口,提高类的易用性
    • 👉 通俗理解:“把属性藏起来,通过方法管起来”

抽象(Abstraction)

  • 核心思想:提取共性,屏蔽细节
  • 实现方式: 接口、抽象类,或者只提供方法定义而隐藏实现。
  • 意义:
    • 使用者只需关心做什么,不必关心怎么做
    • 提高代码的扩展性和维护性,修改实现不影响对外接口。
    • 👉 通俗理解:“只告诉你功能,不告诉你原理”

⚠️ 有的教程会把抽象 视为 封装的一部分(抽象 ≈ “隐藏细节、暴露共性”)

继承(Inheritance)

  • 核心思想:子类复用父类的属性和方法,体现 is-a 关系。
  • 模式:
    • 单继承:一个子类只能继承一个父类(Java)。
    • 多继承:一个子类可继承多个父类(C++ 支持,Java 通过接口间接实现)。
  • 意义:
    • 解决代码复用问题。
    • 为多态打下基础。
    • 👉 通俗理解:“子承父业”

多态(Polymorphism)

  • 核心思想:同一接口,不同实现,表现出不同行为
  • 定义: 多态是指子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现。
  • 实现方式: 继承 + 方法重写、接口实现、duck typing(动态语言)。
  • 多态的三种类型:
    1. 编译时多态(静态多态)
      • 通过**方法重载(Overload)**实现。
      • 编译阶段决定调用哪个方法。
      • 示例:print(int a)print(String s)
    2. 运行时多态(动态多态)
      • 通过方法重写(Override)向上转型实现。
      • 运行时根据实际对象类型决定调用哪个方法。
      • 示例:父类 Animalspeak() 被子类 DogCat 重写。
    3. 参数化多态(泛型多态)
      • 通过**泛型(Generics)**实现。
      • 方法或类可以操作不同类型,而无需写多份代码。
      • 示例:List<String>List<Integer> 都能用同一个 List<T> 实现。
  • 意义:
    • 提高代码的扩展性(新增子类无需修改原有逻辑)。
    • 提升代码的复用性(相同代码可适配多种对象)。
    • 设计模式与面向对象编程技巧的核心基础。
    • 👉 通俗理解:“一个接口,多种形态”