news 2026/7/29 5:16:28

java_base_面向对象原理省流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java_base_面向对象原理省流

每日一学:基础知识精讲

ok,终于也是要写完了,真是令人激动。话不多说有请今天的主角——封装(Encapsulation),依然用邮轮运输的场景讲透核心逻辑。

封装的核心:“打包+控权

其本质可以总结两个方面

1.打包:把对象的“属性(数据)”和“操作属性的方法(行为)”捆绑在一起,形成一个独立的“类”(比如邮轮的“船名,载货量”是属性,“运输货物”是方法,打包在CargoShip类里)

2.控权:隐藏对象内部的敏感细节,只对外暴露“安全的接口”-----简单来说就是“不该看的不让看,不该改的不让改”。

拿之前的例子来类比,就像邮轮的驾驶室---普通乘客(外部代码)不需要知道方向盘怎么联动船舵,发动机怎么调功率(隐藏内部细节),只需要通过“船长下达指令”这个接口(公开方法),让邮轮按规则航行(执行逻辑);如果谁都能直接掰方向盘,邮轮很容易失控(数据被随意修改导致错误)

我们基于之前的邮轮代吗,给货运邮轮/客运邮轮嘉善封装特性,对比 “未封装” 和 “封装” 的区别:

上述代码,明显可以看出我可以随意赋值,甚至连负数都能写,这样严重破坏数据合理性,导致业务逻辑出错

上面是经过封装后的货运邮轮类

数据安全:通过setter 添加校验逻辑,避免非法数据(比如负数,空船名)进入,保证了业务逻辑的正确性。

降低耦合:外部代码只依赖公开接口(get/set/transport),不关心内部属性怎么存储、方法怎么实现 —— 比如后续修改 “载货量” 的单位(吨→千克),只需改 setter 和 transport 方法,外部代码无需改动。

易维护:所有对数学的操作都集中在类内部,出问题只需排查类里的接口,不用翻遍所有外部代码。

结合之前的内容,四大特写不是孤立的:

父类TransportShip封装通用的属性(船名)和方法(transport),子类继承后,再封装自己的特有属性(载货量 / 载客量)。

子类重写 transport 方法体现多态,而重写的方法内部依赖封装的私有属性,保证数据安全。

总结:继承解决 “复用”,多态解决 “灵活”,封装解决 “安全”,抽象解决 “规范”—— 四大特性相互配合,才是面向对象的完整逻辑。

新手提醒

  1. 过度封装:给所有属性都加 get/set,哪怕属性完全不需要外部访问(比如邮轮的 “发动机编号”);
  2. 封装不全:属性私有化了,但 setter 没加校验(比如允许载客量为负数),等于白封装;
  3. 打破封装:为了方便,在子类里直接访问父类的私有属性(正确做法是用父类的公开接口)。

最后感谢各位的观看!下一期讲解一下常用的设计模式,我会结合原神的场景介绍一下他们都用了哪些设计模式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 13:44:27

从零入门CANN:揭秘华为昇腾AI计算的核心引擎

# 从零入门CANN:揭秘华为昇腾AI计算的核心引擎> 📌 **关键词**:CANN、昇腾AI、Ascend、国产芯片、MindSpore、异构计算 > 💡 **适合人群**:AI初学者、高校学生、转行开发者、信创从业者 > ⏱️ **阅读时间…

作者头像 李华
网站建设 2026/7/29 5:29:31

Vue 开发者必看:3 步搞定 dart-sass 替换 node-sass(告别编译慢 +

Vue 开发者必看:3 步搞定 dart-sass 替换 node-sass(告别编译慢 Vue 开发者必看:3 步搞定 dart-sass 替换 node-sass(告别编译慢 兼容坑)引言:为什么我们要和 node-sass 说拜拜技术背景速览:s…

作者头像 李华
网站建设 2026/7/28 7:57:37

.NET进阶——深入理解委托(3)事件入门

为什么我要把事件放在委托这个专题里呢?主要的原因是事件是委托的高级封装。 换句话说,先有委托才有事件,委托是事件的基础,事件是委托的封装。 我们先看一个不用委托的例子,这个代码要求实现这样的功能:小…

作者头像 李华
网站建设 2026/7/28 14:06:37

springboot基于vue的仓库进销存管理系统的可视化分析系统 97lgaf55

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/7/29 8:49:44

springboot基于vue的共享自习室座位选座系统_8m2lz8s1

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

作者头像 李华