news 2026/2/15 20:08:29

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/2/11 3:25:50

字符串中 26 个英文字母的频率统计(不区分大小写)

固定宽度整数类型、字符大小写转换、数组下标映射字母#include<stdio.h> #include<ctype.h> // 提供字符处理函数&#xff08;tolower&#xff09;#define LETTER_COUNT 26 // 定义26个英文字母的常量 int main(void) {int frequency[LETTER_COUNT] { 0 };char t…

作者头像 李华
网站建设 2026/2/8 3:16:13

Ascend C 生态深度集成:从 PyTorch/MindSpore 到大模型部署全流程实战

引言&#xff1a;打破框架壁垒&#xff0c;让 Ascend C 成为您的“性能插件”许多团队已在 PyTorch/TensorFlow 上积累了大量模型&#xff0c;但希望在昇腾硬件上获得更高性价比。然而&#xff0c;直接迁移往往面临性能损失——因为框架默认算子未针对 NPU 优化。Ascend C 提供…

作者头像 李华
网站建设 2026/2/6 5:00:23

凌晨2点的CPU报警:一条慢SQL引发的血案

监控大屏上的CPU曲线突然飙升到99%&#xff0c;报警群里的钉钉响个不停。 “数据库崩了。” 运维查了一圈&#xff0c;最后丢出一张截图&#xff1a;一条没有任何索引关联的 SELECT * 正在对一张五千万行的订单表进行全表扫描。这行代码是三个月前实习生写的&#xff0c;当时数…

作者头像 李华
网站建设 2026/2/15 3:16:32

洛雪音乐助手

链接&#xff1a;https://pan.quark.cn/s/8d7999ad6a7a洛雪音乐助手电脑版是一个基于 electron 的音乐下载软件&#xff0c;海量超高品质无损音乐&#xff0c;集结千万用户打造歌单发源地还不快来下载使用。

作者头像 李华
网站建设 2026/2/9 4:16:06

springboot基于vue的web考研模拟考试系统_fzr42dr3

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

作者头像 李华
网站建设 2026/2/15 13:20:20

springboot基于vue的《计算机科学导论》在线测评系统设计与实现_lvqc54wf

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

作者头像 李华