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

面向对象设计(OOP)核心思想与 Java 实践总结

一、为什么要面向对象设计?

在实际的软件开发中,系统会不断迭代、需求持续变化;如果代码耦合度高、职责混乱,维护成本会急剧上升。

面向对象设计的目标是:降低耦合、提高复用、增强可扩展性和可维护性

二、面向对象的四大基本特性

1.封装:将对象的属性和行为封装在类中,对外只暴露必要的接口。

实现的方式:使用private修饰成员变量和通过public方法(getter/setter)访问

public class User { private String username; public String getUsername() { return username; } }

防止外部随意修改内部数据、提高代码安全性和可维护性

2.继承、子类继承父类的属性和方法,实现代码复用。

public class Person { protected String name; } public class Student extends Person { private int score; }

提高代码复用性、建立清晰的层次结构;但是Java 只支持单继承,过度继承会导致耦合度升高

3.多态:同一接口,不同实现;同一方法调用,表现出不同的行为。

public class Animal { public void speak() { System.out.println("animal"); } } public class Dog extends Animal { @Override public void speak() { System.out.println("dog"); } } Animal animal = new Dog(); animal.speak(); // dog

面向接口编程、提高系统扩展性;多态的继承条件:继承或接口实现、方法重写、父类引用指向子类对象

3.抽象:提取事物的共同特征,忽略不重要的细节。

实现方法:抽象类abstract class、接口interface

public interface PayService { void pay(); } public class AliPayService implements PayService { public void pay() { System.out.println("支付宝支付"); } }

补充说明:

面向对象 ≠ 面向类

常见误区:面向对象不是简单地“把代码写成类”
很多初学者以为:用了 class,写了 getter / setter就是面向对象
实际上:
面向对象强调的是【职责划分】和【对象之间的协作】,而不是类的数量。

组合优于继承:在实际开发中,优先使用组合,而不是继承
class Engine {} class Car { private Engine engine; // 组合 }

原因:继承耦合度高、组合更灵活,便于扩展和替换

在 Java 后端开发中,面向对象设计几乎无处不在:
- Controller:负责请求分发(单一职责)
- Service:负责业务逻辑
- DAO / Mapper:负责数据访问

面向对象不是语法,而是一种解决复杂问题的设计思想

http://www.jsqmd.com/news/978055/

相关文章:

  • 食品异物赔偿协商录音泄露,舆情处置时沟通记录别踩坑
  • 丰田电动SUV热销,为何此时却放缓电动化步伐?
  • 2026 推荐|OpenClaw 全平台部署包,Windows/Mac 通用
  • 河南工科类院校技术维度实测:安阳工学院核心竞争力解析 - 优质品牌商家
  • 掌握Agent技术,抢占高薪先机!小白程序员必备收藏指南
  • FinalShell密码忘了别慌!手把手教你从本地文件找回服务器密码(附Java解密脚本)
  • 2026年企业门户管理平台推荐
  • 别再只用v-if了!用Vue3自定义指令实现这3个超实用的业务场景(附完整代码)
  • 2026年迪拜公司注册权威机构排行:危险化学品许可证/吉尔吉斯斯坦公司注册/哈萨克斯坦公司注册/合规服务对比 - 优质品牌商家
  • 深度学习泛化性的几何视角与嵌入空间分析
  • 小白程序员必备!3个月从零掌握大模型,附收藏版AI学习路线图
  • OpenClaw 一键部署包|内置全部依赖,开箱即用
  • 2026年汽车贴膜性价比哪家高? - myqiye
  • RepoDoc:用知识图谱重构代码文档生成与增量更新
  • CAS 为什么效率高?
  • 【RT-DETR实战】168、交通监控综合项目:跟踪与计数功能扩展实战手记
  • 磁力链接转种子文件:Magnet2Torrent完整指南与核心技术解析
  • 前端超能力:让浏览器听你指挥——技术基石:Web API 的“听觉”与“理解”能力
  • 别再硬啃原生小程序了!用Vue语法+Uni-app快速搞定微信登录注册(附SpringBoot后端接口设计思路)
  • C语言的格式化输出 printf
  • 不惧和谐,永不失效!!
  • OpenClaw一键部署:5分钟玩转AI办公神器
  • 手表维修配件价格多少钱? - myqiye
  • Reloaded-II终极指南:5步快速掌握游戏Mod加载器,告别依赖冲突和手动注入烦恼
  • C语言中的递归
  • 如何3分钟掌握Windows屏幕实时翻译神器:Translumo终极指南
  • ComfyUi 5070Ti显卡视频生成指南
  • COM3D2 MaidFiddler终极指南:免费实时游戏编辑器完整教程
  • Krita AI Diffusion项目解决SD3模型CLIP文件缺失问题的完整指南
  • 小程序毕业设计-基于springboot的旅游线路定制微信小程序基于springboot+微信小程序的旅游线路定制微信小程序(源码+LW+部署文档+全bao+远程调试+代码讲解等)