一、基本概念
面向对象编程是一种以对象为核心的编程范式,对象是对现实世界实体的抽象,对象包含数据(属性)和操作数据的方法(行为)。与面向过程编程不同,面向过程编程关注的是执行顺序,OOP关注的是对象之间的交互与协作。
面向对象VS面向过程
对比维度面向过程面向对象核心单元函数(操作步骤)对象(数据+行为)代码复用方式函数调用继承、组合扩展性修改函数逻辑新增类或扩展已有类典型应用场景简单流程控制(如数学计算)复杂系统建模(如GUI、游戏开发)
二、三大核心特征
1. 封装(Encapsulation)
定义:隐藏对象内部实现细节,仅暴露必要接口3
作用:
提高安全性(如禁止直接修改账户余额)降低代码耦合度简化使用复杂度
Java实现:
public class BankAccount {
private double balance; // 私有属性
// 公有方法提供安全访问
public void deposit(double amount) {
if (amount > 0) balance += amount;
}
}
2. 继承(Inheritance)
定义:子类继承父类属性和方法,实现代码复用与层次化设计
特点:
Java支持单继承(一个类只能继承一个父类)通过extends关键字实现super关键字访问父类成员
示例:
class Animal { void eat() { System.out.println("进食"); } }
class Cat extends Animal {
@Override
void eat() {
super.eat(); // 调用父类方法
System.out.println("吃猫粮");
}
}
3. 多态(Polymorphism)
定义:同一操作作用于不同对象时产生不同行为3
两种形式:
编译时多态(方法重载):
class MathUtil {
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
}
运行时多态(方法重写 + 向上转型)
Animal animal = new Cat();
animal.eat(); // 实际调用Cat类的eat()
三、OOP核心优势
模块化设计
系统分解为独立对象,便于并行开发(如电商系统中订单、用户、商品模块分离)高可维护性
修改单个类不影响其他模块(如修改支付逻辑只需调整Payment类)代码复用性
继承机制减少重复代码(多个子类共享父类方法)灵活扩展性
多态支持动态扩展功能(如新增支付方式无需修改原有代码)
四、Java中的OOP体现
万物皆对象:基本类型外的所有数据类型均为对象(如String、ArrayList)类与对象关系:
// 类定义
class Car {
String color;
void run() { /*...*/ }
}
// 对象实例化
Car myCar = new Car();
接口与抽象类:
接口定义规范(interface)抽象类提供部分实现(abstract class)
五、扩展:OOP五大基本原则(SOLID)
原则名称核心思想Java应用示例单一职责原则(SRP)一个类只承担一个职责UserDAO类仅处理数据库操作开闭原则(OCP)对扩展开放,对修改关闭通过继承扩展功能而非修改原有类里氏替换原则(LSP)子类必须能替换父类Bird对象可替换Animal对象使用接口隔离原则(ISP)定义专用接口而非万能接口拆分MultiFunction为多个小接口依赖倒置原则(DIP)依赖抽象而非具体实现通过接口声明依赖关系