当前位置: 首页 > news >正文

OOP三大特性

一、封装(Encapsulation)

1. 含义

  • 将属性和方法打包在一个类中,并通过访问修饰符控制外部访问。
  • 目的:隐藏实现细节,暴露必要接口,保证数据安全和可控。

2. 实现方式

  • 使用 private 修饰属性,只能在类内部访问。
  • 提供 public 的 getter/setter 作为访问入口。
  • 还可以结合 protected 和 default 来控制包内/子类访问。
public class BankAccount {private double balance; // 封装,不允许外部直接改public double getBalance() {return balance;}public void deposit(double amount) {if(amount > 0) balance += amount;}
}

3. 项目中的应用

  • 数据保护:比如用户密码字段必须加密存储,不允许通过 getter 返回明文。
  • 服务调用约束:只暴露对外的 API(Controller 层),内部实现隐藏在 Service/DAO 中。
  • 安全控制:Web 项目里 VO/DTO 层经常只提供部分字段,避免暴露敏感信息。

4. 优势

  • 提高代码的 安全性 和 可维护性。
  • 降低模块之间的耦合度(调用者只需关心接口,不需要关心内部逻辑)。

二、继承(Inheritance)

1. 含义

  • 子类继承父类的属性和方法,实现代码复用。
  • Java 中使用 extends(类)和 implements(接口)。

2. 实现方式

  • 一个类可以继承一个父类(单继承)。
  • 可以实现多个接口(多实现)。
// 父类
public class Vehicle {public void run() { System.out.println("Vehicle is running..."); }
}// 子类
public class Car extends Vehicle {public void run() { System.out.println("Car is running..."); }
}

3. 项目中的应用

  • 公共逻辑抽取: 比如 BaseEntity(包含 id、createTime、updateTime),所有数据库实体类都继承它。
  • 控制层复用:BaseController 定义通用的返回值方法,子类 Controller 继承。
  • 模板方法模式: 父类定义流程,子类定义具体实现(例如 Spring 的 AbstractApplicationContext)。

4. 优势

  • 提高 代码复用性。
  • 便于建立层次结构,符合人类认知。
  • 缺点:继承层次过深可能导致结构复杂、难以维护(所以常配合组合/接口使用)。

三、多态(Polymorphism)

1. 含义

  • 同一接口,调用不同的实现类,表现出不同的行为。
  • 分为两种:
    • 编译时多态(方法重载 Overload)。
    • 运行时多态(方法重写 Override)。

2. 实现方式

  • 方法重载(Overload):同一个类里方法名相同、参数不同。
  • 方法重写(Override):子类对父类的方法进行覆盖。
  • 父类引用指向子类对象,调用时执行的是子类方法。
class Animal {void speak() { System.out.println("Animal speaks"); }
}
class Dog extends Animal {@Overridevoid speak() { System.out.println("Dog barks"); }
}
class Cat extends Animal {@Overridevoid speak() { System.out.println("Cat meows"); }
}// 调用
Animal a1 = new Dog();
Animal a2 = new Cat();
a1.speak(); // Dog barks
a2.speak(); // Cat meows

3. 项目中的应用

  • 接口编程(Spring 最常见):
@Autowired
private UserService userService; // 接口
// 运行时可能注入 UserServiceImpl 或者 MockUserServiceImpl
  • 策略模式:支付系统里有 AliPayService、WeChatPayService,统一接口 PayService。
  • 模板方法模式:父类定义流程,子类覆盖不同步骤。
  • 集合框架:List list = new ArrayList(); 运行时多态让我们面向接口编程。

4. 优势

  • 解耦:调用方不关心实现细节,只关心接口。
  • 扩展性强:新增实现类时,只需实现接口即可,无需修改调用方。
  • 利于设计模式:大部分设计模式(策略、工厂、模板方法)都是基于多态。

四、对比

特性

定义

关键点

项目应用

优势

封装

隐藏内部细节,仅对外暴露接口

private

属性 +

public

方法

DTO/VO、安全控制、统一 API

安全、降低耦合

继承

子类复用父类的属性和方法

extends

implements

BaseEntity、BaseController、模板方法模式

代码复用、结构清晰

多态

同一接口不同实现,运行时表现不同

方法重写、父类引用指向子类对象

接口编程、Spring IOC、策略模式

扩展性强、利于解耦

在实际项目里:
  • 封装用来控制访问,保证安全;
  • 继承用来抽取公共逻辑,减少重复代码;
  • 多态用来实现灵活扩展,是设计模式的基础。
http://www.lryc.cn/news/625163.html

相关文章:

  • 【计算机视觉与深度学习实战】05计算机视觉与深度学习在蚊子检测中的应用综述与假设
  • 网络基础——协议认识
  • Pytest项目_day18(读取ini文件)
  • Unity 中控开发 多路串口服务器(一)
  • 深层语义知识图谱:提升NLP文本预处理效果的关键技术
  • C++ 多进程编程深度解析【C++进阶每日一学】
  • 一个基于纯前端技术实现的五子棋游戏,无需后端服务,直接在浏览器中运行。
  • 深度学习篇---softmax层
  • Maven 生命周期和插件
  • 大数据分析-读取文本文件内容进行词云图展示
  • 大厂求职 | 2026海尔校园招聘,启动!
  • Vuex 状态持久化企业级解决方案
  • ​Kali Linux 环境中的系统配置文件与用户配置文件大全
  • MongoDB 从入门到精通:安装配置与基础操作指令详解
  • 计算机组成原理(9) - 整数的乘除法运算
  • 抽象类和接口的区别
  • VLN视觉语言导航(3)——神经网络的构建和优化 2.3
  • qsort函数使用及其模拟实现
  • Android Cutout(屏幕挖孔)详解
  • SpringBoot--Spring MVC 拦截器注入与 new 的区别
  • gdb的load命令和传给opeocd的monitor flash write_image erase命令的区别
  • 优秀开发者的重要认知能力无法被AI替代
  • 在win10/11下Node.js安装配置教程
  • Ai Agent 项目
  • 项目延期的主要原因分析,以及应对策略
  • 摔倒检测数据集:1w+图像,yolo标注
  • 深度学习-计算机视觉-微调 Fine-tune
  • 【完整源码+数据集+部署教程】织物缺陷检测系统源码和数据集:改进yolo11-RevCol
  • STL库——string(类函数学习)
  • steal tsoding‘s pastebeam code as go server