《走进对象村4》之面向对象的第一大特性——封装
文章目录
- 🚀文章导读
- 1、封装的概念
- 2、访问限定修饰符
- 3、如何进行封装
- 4、封装的优点:
🚀文章导读
在本篇文章中,将详细的对封装进行总结,文章仅仅是个人的一些理解,如果有错误的地方,还望指出看完本篇文章,必须理解以下几个问题:
1、什么是封装,封装的意义是什么?
2、如何进行封装
3、封装的优点是什么?
4,四个访问限定修饰符的功能及用法
1、封装的概念
面向对象的三大的特征:封装、继承、多态。封装是一种信息隐藏技术。
封装概念:把一个对象的属性进行私有化,同时提供一些可以被外界访问的属性的方法。
封装的意义:把类中的属性和方法封装在一起,使外部只能通过特定的方法访问类中的属性和方法,这样就可以防止外部直接修改类中的属性和方法,从而有效的控制类内部的状态。
以上是封装的概念,关于封装的概念,网上都是五花八门的,只要简单的理解就行,不用死记概念,那么,要想理解封装,就要先知道封装是如何体现出来的,通过什么对成员属性进行封装,下面就来看一些访问限定修饰符,封装时又用到了哪个修饰符。
2、访问限定修饰符
首先让大家看一张图,下面我将结合代码为大家讲解封装所用的修饰符,在java中,可以使用访问修饰符来保护对 类、变量 、方法、以及构造方法的访问、Java支持四种不同的访问权限;

**private:**在一包同一类中可见。使用对象:成员变量,成员方法。注意不能修饰类(外部类)
default:在类中是默认的,当没有用任何访问修饰符修饰时,默认的就是default;在同一包同一类和同一包不同类中可见;使用对象:类、接口、方法、变量;
protected:对同一包中的类和所有子类可见,使用对象:变量、方法;注意,不能修饰类(外部类)
public:对所有类可见,使用对象:类、接口、变量,方法
1、private修饰符:对类中的成员属性进行隐藏,防止被外部类访问,这个修饰符就是进行封装的一种体现,说白了就是,要想进行封装,就要用private进行修饰
3、如何进行封装
下面用代码进行讲解:
图中,定义了一个Student类,而类中的成员属性name 和 age都是用private进行修饰的,然后在main方法中实例化了一个Student对象,通过对象的引用来访问Student中的成员属性,包括private修饰的属性也能访问,不过要注意,此时是在一个类中。

上图是在同一个类的情况下,对private修饰的name可以进行访问,但是请看下图中出现的情况。定义了两个类,Student 和 TestStudent ,在TestStudent类中访问Student类中的被private修饰的成员属性,可以看到,没办法进行访问,这也就印证了上面所说的,private对类中的成员属性进行了隐藏,防止被外部类进行访问。

问题:
如果想要在一个类中访问另一个类中用private修饰的成员属性(变量)时,应该怎么做?
解答:
如果想要对不同类中的private修饰的成员属性进行访问,需要在该类中提供一些访问这些属性的方法,而这些方法都是用public进行修饰的,如果想要在外部类中访问这些成员属性时,直接调用这个方法就可以了!下面用代码进行演示。
这些方法可以是我们自己写的方法,也可以使用快捷方法来创建这些方法,下面给大家演示。





在TestStudent类中就可以通过对象的引用来调用Student类中所提供的方法来对这些被private所修饰的属性进行访问。以上就是用快捷方式创建的方法,当然我们也可以自己定义方法。这里就不再演示。
所以封装主要是通过private来实现的,对类中的成员属性进行私有化,成员属性用private修饰,向外界提供的访问这些属性的方法用public进行修饰
4、封装的优点:
1、隐藏实现细节
2、安全性
3、增加代码的复用性
4、模块化
相关文章:
《走进对象村4》之面向对象的第一大特性——封装
文章目录 🚀文章导读1、封装的概念2、访问限定修饰符3、如何进行封装4、封装的优点: 🚀文章导读 在本篇文章中,将详细的对封装进行总结,文章仅仅是个人的一些理解,如果有错误的地方,还望指出看完…...
罗马数字转整数、整数转罗马数字----2023/5/4
罗马数字转整数----2023/5/4 1.罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D …...
2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。
2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。 答案2023-05-04: 这段代码实现了使用 libswscale 库进行视频缩放的功能。下面是程序的主要流程: 1.获取命令行参…...
QT Android QTextEdit 复制粘贴文本后出现多余数据问题
目录 问题原因解决方法 问题 QT Android QTextEdit 长按选中文本后,点击复制,然后粘贴到手机便签或者QQ中,出现多余数据 例如,要复制的文本为 只因你太美 但实际在便签中粘贴后的文本为 只因你太美 p, li { white-space: pre-wra…...
知识变现海哥:你为什么努力却不富有,大概率是你不懂这个道理
要有价值观念,要有交换思维。商业的本质都是基于价值交换,你能为别人提供多少价值,你就能赚多少米,你帮助别人处理的问题越多你越有价值,你能成就多少人你就能被多少人成就。这是商业行为的底层逻辑。 你没赚到米 一是…...
【Mybatis】增删改查
1.添加相应的jar包 2.创建持久化类 在src目录下创建一个名为com.mybatis.po的包 创建持久化类MyUser,包含三个属性(uid,uname,usex) package com.mybatis.po; /***springtest数据库中user表的持久化类*/ public class MyUser {private Integer uid;//主键private…...
20230504----重返学习-vue2项目-跳转拦截-重定向并返回前一页-使用vuex调用接口-全选与全不选-总价计算
day-061-sixty-one-20230504-vue2项目-跳转拦截-重定向并返回前一页-使用vuex调用接口-全选与全不选-总价计算 vue2项目 跳转拦截 设置跳转拦截,比如在用户没token时,不能进入具体详情页,而是进入登录页进行登录。 跳转拦截具体思路 前端…...
(异或相消)猫猫数字异或和
E - Red Scarf (atcoder.jp) 刚入坑写的一道题被我拉出来对比分析了 我的思路: 垃圾运气选手凭借直觉乱搞猜出来的,没有思路。 题解思路: 由问题陈述中XOR的定义,我们可以看出计算3个或更多整数的XOR可以以任意顺序进行&#…...
树脂塞孔有哪些优缺点及应用?
树脂塞孔的概述 树脂塞孔就是利用导电或者非导电树脂,通过印刷,利用一切可能的方式,在机械通孔、机械盲埋孔等各种类型的孔内进行填充,实现塞孔的目的。 树脂塞孔的目的 1 树脂填充各种盲埋孔之后,利于层压的真空下…...
【Robot Framework】RF关键字大全
收录工作当中最常用的Robot Framework关键字 内容较多,可以CtrlF快速搜索自己想要的 1. RF循环使用(FOR循环) {list1} create list LOG TXT INI INF C CPP JAVA JS CSS LRC H ASM S ASP FOR ${file_type} IN {list1} log 构造请求参数 ${t…...
Xilinx Artix-7【XC7A35T-2CSG324I】【XC7A35T-1CSG324I】成本与收发器优化的FPGA器件
产品介绍: Xilinx Artix -7系列 FPGA 重新定义了成本敏感型解决方案,功耗比上一代产品降低了一半,同时为高带宽应用提供一流的收发器和信号处理能力。这些设备基于 28 纳米 HPL 工艺构建,提供一流的性能功耗比。与 MicroBlaze™ 软…...
K8S之自定义Controller
简介 在此之前我们先来了解下kubernetes的两个概念"声明式API"和"控制器模式"。"声明式API"核心原理就是当用户向kubernetes提交了一个API对象的描述后,Kubernetes会负责为你保证整个集群里各项资源的状态,都与你的API对象…...
无线电相关的SCI期刊有哪些? - 易智编译EaseEditing
以下是几个无线电相关的SCI期刊: IEEE Transactions on Wireless Communications: 这是一个IEEE无线通信协会的期刊,主要涵盖了无线通信领域的最新研究进展,包括无线网络,通信系统和信号处理等方面。 IEEE Transacti…...
Rust - 结构体基本使用
基础代码示例 为了理解何时需要使用结构体,官方文档给了一个案例,就是计算长方形的面积,这里我们会一步一步的重构代码直到使用结构体为止。 计算长方形的面积的具体逻辑就是获取长方形的宽度和高度,然后通过公式计算出长方形的…...
29. Kubernetes 核心组件讲解——Controller Manager
本章讲解知识点 Controller Manager 概述Replication ControllerNode ControllerResourceQuota ControllerNamespace ControllerService Controller 与 Endpoint Controller1. Controller Manager 概述 1.1 基本概念 一般来说,智能系统和自动系统通常会通过一个“操作系统”…...
BetaFlight统一硬件配置文件研读之feature命令
BetaFlight统一硬件配置文件研读之feature命令 1. 源由2. 代码分析3. 实例分析4. 配置情况4.1 feature4.2 feature list4.3 feature feature_name4.4 feature -feature_name 5. 参考资料 统一硬件配置文件的设计是一种非常好的设计模式,可以将硬件和软件的工作进行解…...
ChatGPT 不好用?那你看下这份 Prompt 工程指南
作为大型语言模型接口,ChatGPT 生成的响应令人刮目相看,然而,解锁其真正威力的关键还是在于提示工程。 在本文中,我们将揭示制作提示的专家级技巧,以生成更准确、更有意义的响应。无论你使用 ChatGPT 是为了服务客户、…...
冲浪杂记——
华为od是指什么? 华为OD(Open Developer Platform)是华为面向全球开发者推出的开放平台,旨在为开发者提供丰富的技术资源和开发工具,支持开发者快速构建基于华为技术的应用程序、解决方案和服务。华为OD平台为开发者提…...
深入理解Python中的进程与线程
前言 今天我们使用的计算机早已进入多CPU或多核时代,而我们使用的操作系统都是支持“多任务”的操作系统,这使得我们可以同时运行多个程序,也可以将一个程序分解为若干个相对独立的子任务,让多个子任务并发的执行,从而…...
Data retry场景介绍
本文介绍PDN激活失败或者IP Address缺失时的处理机制。 终端是否会retry? 如何设置data retry timer? Modem retry还是上层应用发起retry? IPV4V6 Fallback 3GPP TS 24.008 6.1.3.1定义了UE使用IPV4V6 pdp type建PDN失败后,如果网络以#Cause50、#Cause51或者#Cause52 …...
别再乱设摩擦系数了!手把手教你为Gazebo/ODE物理引擎设置真实的材料摩擦力
Gazebo仿真中的摩擦力参数设置:从理论到实践的科学调参指南 在机器人仿真领域,Gazebo作为最广泛使用的物理仿真平台之一,其物理参数设置的准确性直接决定了仿真结果的可信度。然而,许多工程师和研究人员在使用过程中,…...
Nintendo Switch存储管理终极指南:NxNandManager完全解决方案
Nintendo Switch存储管理终极指南:NxNandManager完全解决方案 【免费下载链接】NxNandManager Nintendo Switch NAND management tool : explore, backup, restore, mount, resize, create emunand, etc. (Windows) 项目地址: https://gitcode.com/gh_mirrors/nx/…...
DXVK 2.7.1深度解析:Linux游戏生态的Direct3D翻译层革命性突破
DXVK 2.7.1深度解析:Linux游戏生态的Direct3D翻译层革命性突破 【免费下载链接】dxvk Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine 项目地址: https://gitcode.com/gh_mirrors/dx/dxvk 在Linux平台上运行Windows游戏和图形应用一直…...
5个步骤彻底告别3D打印工作流中的格式转换烦恼
5个步骤彻底告别3D打印工作流中的格式转换烦恼 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾经为3D打印工作流中的格式转换问题感到困扰?想象一下这…...
ngx_unix_recv
1 定义 ngx_unix_recv 函数 定义在 ./nginx-1.24.0/src/os/unix/ngx_recv.cssize_t ngx_unix_recv(ngx_connection_t *c, u_char *buf, size_t size) {ssize_t n;ngx_err_t err;ngx_event_t *rev;rev c->read;#if (NGX_HAVE_KQUEUE)if (ngx_event_flags & N…...
别再只会用strlen了!CAPL脚本字符串处理实战:从CAN报文解析到日志格式化
CAPL脚本字符串处理实战:从CAN报文解析到日志格式化 在汽车电子测试领域,CAPL脚本是Vector工具链(如CANoe/CANalyzer)中不可或缺的组成部分。字符串处理作为基础却关键的操作,直接影响着测试脚本的效率和可靠性。本文将…...
从《只狼》到你的项目:聊聊UE4布娃娃系统如何做出更‘有戏’的死亡动画
从《只狼》到你的项目:用UE4布娃娃系统打造叙事级死亡动画 在《只狼》中,当敌人从悬崖坠落时扭曲的肢体,或是Boss战败后跪地缓缓倒下的瞬间,这些死亡动画远不止是技术实现——它们成为玩家情感体验的延伸。作为UE4开发者ÿ…...
从ROS到飞控:ENU与NED坐标系转换的实战解析与避坑指南
1. 为什么ENU和NED坐标系让开发者头疼? 第一次接触无人机开发时,我被ROS和飞控之间的坐标系问题坑得不轻。明明在ROS里跑得好好的导航算法,一接入PX4飞控就出现飞机往反方向飞、高度控制错乱的情况。后来才发现,这全是ENU和NED坐标…...
别再死记硬背卡尔曼滤波公式了!用Python可视化带你理解高斯分布融合的奥义
用Python动态可视化揭开卡尔曼滤波中高斯分布融合的奥秘 在机器人定位和自动驾驶系统中,卡尔曼滤波就像一位隐形的导航专家,不断融合预测和测量数据来给出最优状态估计。但许多工程师在学习过程中,往往被其中高斯分布相乘的数学推导所困扰——…...
深入探讨.NET 6中WeakHandle的垃圾回收机制
在.NET框架中,垃圾回收(Garbage Collection, GC)是管理内存的重要机制之一。而在.NET 6版本中,我们发现了一个关于弱引用(Weak Reference)的有趣现象。下面我们将通过一个实例来详细分析这个问题。 问题描述 以下是一个简单的C#代码示例,展示了在.NET 6下使用GCHandle…...
