【JavaSE】类与对象--封装性

news2024/11/30 2:46:49

文章目录

  • 一、面向对象的三大特性
  • 二、封装性
    • 1.什么是封装性?
    • 2.为什么要有封装性?
    • 3.封装性的作用
    • 4.封装性的实现步骤
    • 5.访问限定修饰符


一、面向对象的三大特性

面向对象的三个基本特征是:封装、继承、多态。

二、封装性

1.什么是封装性?

封装性是面向对象编程中的三大特征之一,封装性就是把对象的成员属性和成员方法结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含如下两个含义。
(1)把对象的全部成员属性和全部成员方法结合在一起,形成一个不可分割的独立单位(即对象)
(2)信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。

2.为什么要有封装性?

(1)对象中的成员属性如果没有被封装,一旦对象创建完成,就可以通过对象的引用获取任意的成员属性的值,并能够给所有的成员属性任意赋值。在对象的外部任意访问对象中的成员属性时非常危险的,因为对象中的成员属性是对象本身具有的与其他对象不同的特征,是对象某个方面性质的表现。
(2)对象中的成员方法如果没有被封装,也可以在对象的外部随意调用,这也是一种危险的操作。因为对象中的成员方法只有部分是给外部提供的。保留有限的对外接口使之与外部发生联系。而有一些是对象自己使用的方法。

3.封装性的作用

封装的原则就是要求对象以外的部分不能随意存取对象的内部数据(成员属性和成员方法)。从而有效地避免了外部错误对它的”交叉感染”,使软件错误能够局部化,大大减少差错。

4.封装性的实现步骤

  • 1.设置私有成员

只有在声明成员属性或成员方法时,使用private关键字修饰就实现了对成员的封装。封装后的成员在对象的外部不能被访问,但在对象内部的成员方法中可以访问到自己对象内部被封装的成员属性和被封装的成员方法。达到了对对象成员保护的目的,只能是对象自己使用,其他人不可以访问自己的私有成员。即尽可能隐蔽对象的内部细节,对外形成一道屏障。

例:
在这里插入图片描述

  • 2.私有成员的访问

对象中的成员属性一旦被private关键字封装成私有之后,就只能在对象内部的成员方法中使用。不能被对象外部直接赋值,也不能再对象外部直接获取私有属性的值。如果不让用户在对象的外部设置私有属性的值,但可以获取私有属性的值,或者允许用户对私有属性赋值,但需要限制一些赋值的条件,解决的办法就是在对象的内部声明一些操作私有属性的共有方法。因为私有的成员属性在对象内部的方法中可以访问,所以在对象中声明一个访问私有属性的方法,再把这个方法通过public关键字设置为共有的访问权限.如果成员方法没有加任何访问控制修饰,默认就是public的,在任何地方都可以访问。这样,在对象外部就可以将公有的方法作为访问接口,间接地访问对象内部私有成员。

例:
在这里插入图片描述
提示:IEDA编译器提供了自动生成getter和setter的方法
在这里插入图片描述

5.访问限定修饰符

访问范围privatedefault (默认)protectedpublic
同一个类可访问可访问可访问可访问
同一包中的其他类可不访问可访问可访问可访问
不同包中的子类不可访问不可访问可访问可访问
不同包中的非子类不可访问不可访问不可访问可访问
  1. private
    私有访问修饰符是最严格的访问级别,所以被声明为 private 的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为 private。
    声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。
    2.default (即默认,什么也不写)
    使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。
  2. protected
    用保护访问控制符 protected 修饰的类成员可以被三种类所访问:该类自身、与它在同一个包中的其他类以及在其他包中的该类的子类。使用 protected 修饰符的主要作用,是允许其他包中它的子类来访问父类的特定属性和方法,否则可以使用默认访问控制符。
  3. public
    被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。
    如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。

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

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

相关文章

BLE学习(4):蓝牙地址类型和设备的隐私

蓝牙地址也被称为蓝牙MAC地址,它能唯一标识一个蓝牙设备的48位的值。在蓝牙规范中,它被称为BD_ADDR。蓝牙的地址类型可以分为两种:public addresses和random addresses,其中random addresses又可再细分为几类,如下图所…

centos7.8手动部署php环境 01 nginx1.8.0编译安装

环境说明: 一、使用电脑 MacBook Pro 二、ssh 工具 finalShell 三、本地虚拟机 VMware Fusion 四、服务器配置 CentOS 7.8 64位 ps:虚拟机安装CentOS省略 登录服务器 一、安装基础工具 yum install net-tools -y yum install wget -y二、将yum源更改为腾…

创新型智慧农业信息化系统建设方案

农业电信增值服务与农村信息化建设要充分考虑新的信息技术、移动通信技术带来的革命,尤其是三网融合、移动互联网、下一代互联网、物联网、云计算、移动支付等新型产品与业务对我们的影响。 存在问题 •网络覆盖基础差 仍然有很多行政村没有宽带网络的覆盖&#x…

TiDB HTAP

TiDB 数据库 HTAP 概述 HTAP技术 OLAP和OLTP带来了多副本的问题。 HTAP的要求 HTAP的架构 异步复制,不参与投票。 HTAP的特性 行列混合 列存支持基于主键的实时更新TiFlash作为列存副本OLTP和OLAP业务隔离 智能选择(CBO自动或者人工选择)…

IB数学的备战技巧有哪些?

去知名品牌院校进修是许多学员的理想,可是众所周知这些重点大学的入校规定是十分严谨的。因此许多学员为了更好地提高自身的入校概率,就报名参加了一些可以大大加分的国际课程内容和考試。在其中IB数学课则是最受众多学员钟爱的一个课程内容。近些年&…

PyTorch 官方库「上新」,TorchMultimodal 助力多模态人工智能

多模态人工智能是一种新型 AI 范式,是指图像、文本、语音、视频等多种数据类型,与多种智能处理算法相结合,以期实现更高的性能。 近日,PyTorch 官方发布了一个 domain library–TorchMultimodal,用于 SoTA 多任务、多模…

[Linux]----进程间通信之共享内存

文章目录前言一、system V共享内存原理二、创建共享内存关联和去关联共享内存进行通信三、基于管道进行共享内存通信四、临界资源五、信号量总结前言 基于上篇我们利用管道进行进程间通信的使用和实现,本篇将带大家通过共享内存进行进程间通信! 正文开始…

R9.8-9.8-9.8-9.8A_特点

R9.8-9.8-9.8-9.8A_特点 R9.8-9.8-9.8-9.8A_特点哈威柱塞泵主要特点是高自吸转速,工作效率高,结构紧凑,工作压力高等。该泵可为工程机械、铲雪车、路堤割草机、柴油叉车、自驱式工作平台和农业机械中的执行元件等提供压力油。 哈威液压泵R9.…

LIRA: Learnable, Imperceptible and Robust Backdoor Attacks 论文笔记

论文信息 论文名称LIRA: Learnable, Imperceptible and Robust Backdoor Attacks作者Khoa Doan(Baidu Research)会议/出版社ICCV 2021pdf📄在线pdf代码💻pytorch其他该作者还有一篇攻击的论文,在线pdf 介绍 本文提出了一种新的攻击框架 LIR…

技术中台的定义、范围与内容

【摘要】中台不能算是一个新的概念,只不过把它从一个单一系统扩展到了企业内部所有系统和组织级(企业架构级)的概念。那么时下“中台”的本质究竟是什么?技术中台又该如何理解? 前台、中台、后台的概念早就有之,只不过不同的场景下有不同的内涵。前中后台是从应用系统架…

T293037 [传智杯 #5 练习赛] 白色旅人

题目描述 有一个物品队列 \frak BB,初始时为空。现在共有三种操作。每个操作会给定三个整数 \mathrm{op},x,yop,x,y,其中 \mathrm{op}op 表示操作种类,x,yx,y 是操作的参数。操作分为如下三种: 11:向 \frak BB 尾部添…

React 简书项目实战【3】实现搜索框动画

React 简书项目实战【3】实现搜索框动画 添加判断变量 header/index.js 核心代码 ... class Header extends Component {constructor(props) {super(props);this.state {focused: true}}render() { ...添加classname header/index.js 核心代码 搜索框和放大镜图标 <…

手把手教你如何用界面组件DevExpress WPF应用一个模板主题

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF组件包…

VR失重太空舱游乐设备|航空航天VR体验|VR航天航空体验馆

普乐蛙推出了十几种不同类型的VR航天航空体验设备&#xff0c;VR创意内容丰富好玩&#xff0c;360全景还原航空各个场景&#xff0c;体验享受航空中的失重、飞行、旋转等刺 激与乐趣;模拟月球、太空、空间站等丰富航天场景&#xff0c;近距离体验航天科幻十足的魅力;通过沉浸式…

vue(移动端)使用高德地图实现精准定位

目录 效果图 前提准备 代码展示 效果图 两个页面 页面一&#xff08;粗略定位&#xff09; 点击城市进入页面二 &#xff08;粗略定位&#xff09;&#xff0c;搜索框输入具体位置&#xff08;以大连理工大学为例&#xff09; 点击大连理工大学&#xff0c;回到页面一&…

[附源码]java毕业设计校园淘宝节系统

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

MongoDB Journaling工作原理

文章目录 小结当 mongod 进程启动后,首先将数据文件映射到 shared 视图中,假如数据文件的大小为 4000 个字节,它会将此大小的数据文件映射到内存中,地址可能为 1000000~1004000。如果直接读取地址为1000060的内存,我们将得到数据文件中第60个字节处的内容。有一点要注意,…

ElementUI的Form表单使用slot-scope=“scope“获取当前表格行数据实现数据回显、修改表单操作

在写项目时&#xff0c;老师通过向后端发请求获得表格原来的数据来填充修改表单里的数据。 这是表格&#xff1a; 这是点击修改按钮后显示出来的修改表单&#xff1a; 但本地里都已经有这些数据了&#xff0c;就没必要再发一次请求&#xff0c;徒增服务器压力。 准备 可是…

Java基础之《netty(3)—NIO之Buffer》

一、Buffer基本介绍 1、缓冲区&#xff08;Buffer&#xff09; 缓冲区本质上是一个可以读写数据的内存块&#xff0c;可以理解成是一个容器对象&#xff08;数组&#xff09;。该对象提供了一组方法&#xff0c;可以更轻松的使用内存块。缓冲区对象内置了一些机制&#xff0c;…

黑盒子问题

一 问题描述 黑盒子代表一个原始数据库&#xff0c;存储一个整数数组和一个特殊的 i 变量。最初的时刻&#xff0c;黑盒子是空的&#xff0c;i0&#xff0c;黑盒子处理一系列命令&#xff08;事务&#xff09;。有两种类型的事务。 ① ADD(x)&#xff0c;将元素 x 放入黑盒子…