【剧前爆米花--爪哇岛寻宝】面向对象的三大特性——封装、继承以及多态的详细剖析(下——封装)。

news2024/11/24 13:23:27

作者:困了电视剧

专栏:《JavaSE语法与底层详解》

文章分布:这是一篇关于Java面向对象三大特性——封装的文章,在本篇文章中我会分享封装的一些基础概念以及实现。

 

目录

封装定义和优点

访问限定符实现封装

private限定符

private修饰的成员在继承中的行为

protected限定符


 

封装定义和优点

封装:每个对象都包含有它能进行操作的所有信息,这个特性称为封装。这样的方法包含在类中,通过类的实例来实现。

优点:

1.封装还避免了命名冲突的问题,封装有隔离作用,不同的类中可以有相同名称的方法和属性,但不会混淆,也可以减少耦合(比如实现界面和逻辑分离)

2 .可以让类对外接口不变,内部可以实现自由的修改

3.从安全性考虑,封装使对代码的修改更加安全和容易,封装明确的指出了哪些属性和方法是外部可以访问的

4.因为封装的类功能相对独立,因此能更好的实现代码复用

5.从设计角度来讲,封装可以对外屏蔽一些重要的信息。注意:这里的代码保护不是指代码本身的加密,而是对不想外部更改的代码通过私有实现。

通俗易懂地来说:

 

封装就是将一个类装进一个“箱子”中,他会实现一些功能,但是程序员不用知道他实现的“细节”,自然也不会对其内容进行修改,只需要拿到运算完成的结果就行了。这样不仅是代码逻辑更加清晰还使代码的安全性更高等。 

访问限定符实现封装

为了实现封装特性, Java 中引入了访问限定符,主要限定:类或者类中成员能否在类外或者其
他包中被访问。
由于C语言是面向过程而不是面向对象,所以C语言没有封装的概念,但C语言仍然有访问权限的刚需,在C语言中,通过static关键字来解决这一问题,详情可以浏览一下我的这篇博客: https://blog.csdn.net/m0_62815572/article/details/127484662?spm=1001.2014.3001.5502

private限定符

private修饰的成员权限最低,只能在类中进行访问,我们在使用的过程中如果在其他类中需要对其进行修改,需要使用get和set方法将其带出来,否则就会报错。

private修饰的成员在继承中的行为

当子类继承父类时,子类中会有父类中的成员变量和成员方法等,但是一个成员被private修饰后只能在当前类中使用,移到子类中是否是由原先的只能被父类使用改为只能被子类使用了呢?

答案是不能,此时的name无法在子类中被使用,要想对其进行交互还是需要 get和set方法,但是在堆区进行分配空间相关的事情时,他仍和其他的成员变量进行一样的行为,他只是在子类中无法进行直接访问即父类中private成员变量虽然在子类中不能直接访问,但是也继承到子类中了。

protected限定符

package demo1;

public class Test01 {
    protected int a=10;
}

 在不同包中只有是父类和子类的关系,子类中才能直接对父类的成员进行访问

同为一个父类的子类之间无法访问被protected修饰的成员。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习-LeNet(第一个卷积神经网络)

文章目录简介数据集模型搭建模型训练模型测试前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 LeNet模型是在1998年提出的一种图像分类模型,应用于支票或邮件编码上的手写…

双模蓝牙MIDI模块BT401的功能简单描述和蓝牙MIDI协议

目录 一、蓝牙MIDI概念和功能简述 蓝牙MIDI,实际上是由苹果公司推广并且应用的,目的是借助于低功耗蓝牙来实现 主机和设备之间的无线连接 。协议的标准也是苹果定的。目前也充分的应用到安卓平台了 二、详细记录--功能说明 2.1 蓝牙MIDI的测试说明--m…

【笔记】计算机组成原理复习重点——篇三

计算机组成原理复习重点笔记 第二篇 计算机系统的硬件结构 第3章 系统总线第4章 存储器第5章 输入输出系统 第3章 系统总线 3.1 总线的基本概念 一、为什么要用总线 计算机的各个系统功能部件连在一起才能协同工作,部件之间不可能采用全互联形式&…

MATLB|基于复杂网络的配电系统微电网优化配置

目录 一、概述 二、系统研究 三、复杂网络框架 四、结果与讨论 五、Matlab代码实现 一、概述 多年来,各个领域的科学家开发了一套广泛的工具:数学、计算和统计,旨在分析、建模和理解网络。网络研究的基础可以追溯到图论的发展&#xff0…

第三方软件测试机构如何选择?

什么是软件产品检测报告? 软件测试机构根据委托方提供的测试需求,对软件进行功能性的检测,保证软件功能能正常运行。 软件产品登记测试也是申请软件产品登记的必要条件,对于买方来说,通过第三方检测机构出具的测试报告…

yolov5修改骨干网络-使用自己搭建的网络-以efficientnetv2为例

yolov5修改骨干网络–原网络说明 yolov5修改骨干网络-使用pytorch自带的网络-以Mobilenet和efficientnet为例 yolov5修改骨干网络-使用自己搭建的网络-以efficientnetv2为例 增加网络的深度depth能够得到更加丰富、复杂的特征并且能够很好的应用到其它任务中。但网络的深度过深…

全面适配 Android12

本文目录 背景技术分析实战总结与展望 背景 2021 年 10 月 5 日 Google 发布 Android12 操作系统,安全性和隐私性大幅提升,各手机厂家陆续更新 Android12 操作系统。 2022 年随着各大 APP 应用市场推动 Android12 适配工作,开发者积极响应…

应用性能监控管理工具

应用程序性能监控 Application Manager 的应用程序性能监控(APM Insight) 使应用程序开发人员和 DevOps 工程师能够了解应用程序性能,并帮助他们在问题影响最终用户之前对其进行故障排除。在应用程序性能问题影响收入之前监控、查明并解决它…

计算机毕设Python+Vue校园社团管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

PiL测试实战(下)| PiL阶段的闭环测试

前言 上篇我们介绍了单元级软件的PiL测试,对于集成级的PiL测试,其流程和单元阶段基本一致。然而,对于一些带有反馈控制逻辑的集成测试(如电机控制器MCU),PiL阶段会将控制算法(Controller Model…

HeidiSQL连接MySQL失败

HeidiSQL连接MySQL失败故障现象解决方案方案一方案二故障现象 在使用非本地盘的位置上的Heidi SQL工具,远程连接MySQL,发现连接失败,错误的原因是“plugin caching_sha2_password.dll could not be loaded”的解决办法。 解决方案 我们可…

Linux进度条小程序与git

gitLinux进度条小程序缓冲区问题回车换行倒计时小程序进度条程序git什么是gitgit的发展史git的基本操作创建仓库与本地仓库建立联系Linux中git提交代码的三板斧git基础指令Linux进度条小程序 缓冲区问题 编译运行后发现延迟了两秒才出现数字,我们都知道程序中的代码…

83-137-springcloud-stream-nacos-sentinel

83-137-springcloud-stream-nacos-sentinel: Stream 常见MQ(消息中间件):ActiveMQ,RabbitMQ,RocketMQ,Kafka Cloud Stream:屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程…

WSL_02 WSL配置强大的 zsh

文章目录1 ZSH简介2 安装zsh2.1 准备阶段2 基础安装3 zsh更换主题3.1 使用vscode 打开 .zshrc4 自定义支持插件4.1 修改配置5 安装第三方插件autosuggestion5. 1 下载参考1 ZSH简介 zsh是Linux命令行界面,可以为帮助我们自定义配置命令行窗口,并且具有许…

vue引入iconfont/引入svg原理

前言 本文撰写的初衷是为了向组内成员推行使用svg sprites的方式管理项目的图标,由于实际工作中很多项目仍然采用font class的方式,这样不自觉带来一个痛点. 当项目一期开发完毕后,过段时间进入到项目二期。新增的开发需求不可避免的会增加新的图标,而font class需要全量打包…

Redis数据结构及命令详解

个人博客地址: http://xiaohe-blog.top/ 文章目录0. 简述1. 通用命令1.1 keys1.2 del1.3 type1.4 exists1.5 expire1.6 ttl2. string 类型2.1 set2.2 get2.3 mset2.4 mget2.5 setnx2.6 setex2.4 incr2.5 incrby2.6 incrbyfloat3. hash 类型3.1 hset3.2 hget3.3 hmse…

互联网时代,云计算的6大特征

1 云计算的定义 云计算是目前业内的热点概念,它以开放的标准和服务为基础,以互联网为中心,提供安全、快速、便捷的数据存储和网络计算服务,让互联网这片“云”上的各种计算机共同组成数个庞大的数据中心及计算中心。它可以被看成…

Observability:我们该选 Beats 还是 Elastic Agents 来采集数据?

除了 Logstash 之外,Elastic 提供了两种主要的方式来向 Elasticsearch 发送数据: 我们可以选择直接把数据从 Beats 发送至 Elasticsearch。当然我们也可以通过 Logstash 更进一步处理再发送至 Elasticsearch。 另外一种方式是使用 Elastic Agents 来发送…

[附源码]Nodejs计算机毕业设计基于的二手车交易平台Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

[附源码]Python计算机毕业设计Django课室预约系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…