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

java_base_面向对象原理省流

每日一学:基础知识精讲

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

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

其本质可以总结两个方面

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

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

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

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

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

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

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

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

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

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

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

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

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

新手提醒

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

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

http://www.cnnetsun.cn/news/27473.html

相关文章:

  • 算法练习4--数组:长度最小的子数组
  • Spring Cloud Gateway为什么要推出 WebMVC 版本?深度解析两大版本的差异与选型
  • git和github的区别
  • 小白从零开始勇闯人工智能Linux初级篇(MySQL库)
  • Bootstrap 模态框详解
  • MinerU终极安全离线部署指南:完全断网环境解决方案
  • 练题100天——DAY24:罗马数字转整数+环形链表+大小端判断
  • 网站域名:关键的战略资产
  • Airflow 做 ETL,真不是“排个 DAG 就完事儿”:那些年我踩过的坑与悟出的道
  • 数据库连接池监控最佳实践:用 Prometheus + Grafana 打造可视化监控体系
  • Windows验机
  • 别让孩子视力提早“透支” ,这份护眼指南请收好
  • 儿童青少年近视干预科学指引,破解家长近视防控焦虑
  • 解析 .NET 核心基石:CTS、CLS 与 CLR 的核心价值与协同作用
  • Selinux权限的检测
  • 常见报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): org.example.dem
  • 甲骨文AI投资支出激增致股价创24年最大跌幅
  • TinyMCE4粘贴word超链接自动解析域名
  • TinyMCE6处理微信公众号音频视频嵌入
  • 昇腾 Ascend 自定义算子开发全攻略:从 TBE DSL 到 AICPU,打通 AI 加速最后一公里
  • 当电机开始“唱歌“:NVH工程师的降噪日常
  • AI界的“经济适用男“!80亿参数小模型完胜GPT-5,成本降低70%,CSDN程序员必藏的智能调度方案
  • FPGA教程系列-Vivado Aurora 8B/10B 例程解读
  • 227827827
  • MCU的启动流程你了解么?
  • 逻辑回归(Logistic Regression)进行多分类的实战
  • RNN(循环神经网络)原理
  • 人机协同重构创作生态——生成式AI赋能内容产业的变革与思考
  • Java 小白求职者在互联网大厂的面试实录:从 Spring Boot 到微服务架构
  • V助手舆情分析智能体:重塑舆情分析,从“人找信息”到“信息为人”