Java——类和对象第二节——封装

1.什么是封装

封装是面向对象程序的三大特性之一,面向对象程序的三大特性分别是封装,继承,多态

而封装简单来说就是套壳隐藏细节

打个比方:

在一些电脑厂商生产电脑时,仅对用户提供开关机键,键盘输入,显示屏和USB插口,而使用电脑的人不必关心电脑内部硬盘,CUP,芯片等核心组件,就可以通过键盘鼠标显示屏进行交互完成各种功能

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互

2.访问限定符

在java中封装主要由类和访问权限来实现,类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。

以上是java提供的4种访问限定的关键字

这四种关键字要怎么理解呢?

这里可以做个比喻

将类比作一个人,包比作一个家族

1.private:同一包中的同一类,也就相当于自己,自己的秘密只有自己知道,所以被private修饰的成员变量和方法只能本类中的成员方法可以调用

2.default:同一包中的不同类,也就相当于一个家族,被default修饰的成员方法和成员变量在同一个包中可以被其他类中的成员方法调用,也就相当于被default修饰后,成为了家族里面的秘密,外人是不知道的

3.protected:主要运用在继承里面,这里就不做过多介绍

4.public:他相当于一个人的外貌特征,谁都可以访问

注意:

1.当成员变量,成员方法或者类的前面什么访问限定符都不写时,编译器会默认为default

2.访问权限除了可以限定类中成员的可见性,也可以控制类的可见性

3.封装的步骤

1.使用private关键字对类里面的成员变量进行隐藏

2.写setter和getter方法对隐藏的成员变量进行访问

注意:1.private一般修饰成员变量

           2.setter和getter方法可以通过idea自动给我们生成

           3.可以在方法里面加一些条件语句进行限制

3.1使用idea生成Getter和Setter方法

3.2封装代码演示

class Student{
//private修饰类的成员变量private String name;private int age;private String gender;public String getName() {return name;}//在类的方法里面添加条件语句,限制名字的长度public void setName(String name) {if(name.length()<6)this.name = name;}public int getAge() {return age;}
//在类的方法里面添加条件语句,限制年龄的范围public void setAge(int age) {if(age>0&&age<30)this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public void show(){System.out.println(this.name+"今年"+this.age+",性别:"+this.gender);}
}public class Test02 {public static void main(String[] args) {
Student student=new Student();
student.setName("李狗蛋");
student.setAge(16);
student.setGender("男");
student.show();}
}

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

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

相关文章

Ubuntu20.04中的Pyqt4

如何在ubuntu20.04中安装Pyqt4 我已经尝试了所有的命令&#xff1a; sudo apt-get install python-qt4 sudo apt-get install libqt4-dev sudo apt-get install pyqt4-dev-tools sudo apt-get install pyqt4.qsci-dev sudo apt install python3-pyqt4 尽管pyqt5运行得很流畅…

瑞友科技质量改进服务事业部总经理张力受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 北京瑞友科技股份有限公司质量改进服务事业部总经理张力先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“PMO如何对接战略成为企业IT投资成功的有效保障”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#x…

一个不知名的开源项目可以带来多少收入

起源 2020 年新冠疫情开始蔓延&#xff0c;当时我在同时经营 3 个不同的公司。除了其中的体育赛事平台因为疫情关门大吉之外&#xff0c;另外两个公司并没有受影响&#xff0c;营收和利润反而都持续增加。但是连续几个月不能出远门&#xff0c;也不能随便见朋友和客户&#xff…

软件测试到了35岁,真的就干不动了吗?

摘要&#xff1a;随着年龄的增长&#xff0c;很多人担心软件测试岗位是否存在技术瓶颈。本文将从零到一&#xff0c;详细且规范地探讨软件测试岗位在35岁后的发展前景&#xff0c;并提供一些建议以应对可能的挑战。 引言&#xff1a;软件测试作为软件开发生命周期中至关重要的…

基于PySpark进行去哪儿网数据分析

基于PySpark进行去哪儿网数据分析 本文介绍了如何使用PySpark对去哪儿网的数据进行分析&#xff0c;从而洞察用户偏好、热门目的地以及销售趋势。 1.数据加载 我们需要确保已经准备好了PySpark的开发环境&#xff0c;并且准备好了去哪儿网的数据集。可以通过创建SparkSessio…

SpringCloudAlibaba:5.1Sentinel的基本使用

概述 简介 Sentinel是阿里开源的项目&#xff0c;提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 官网 https://sentinelguard.io/zh-cn/ Sentinel的历史 2012 年&#xff0c;Sentinel 诞生&#xff0c;主要功能为入口流量控制。 2013-2017 年…

三维奇境:Processing中的3D建模与动画探索

前言: 🌌 欢迎踏入该系列的第五篇章。在前几期的旅程中,我们共同绘制了静态的画卷,编织了动态的影像,甚至让数据跳起了舞。今天,我们将跨越二维的界限,进入一个更加神秘和广阔的领域——三维世界。Processing不仅是一个二维绘图工具,它同样能够让我们在三维空间中自由…

中北机械有限公司将参加2024长三角快递物流供应链与技术装备展览会

参展企业介绍 浙江中北机械有限公司总部位于浙江杭州&#xff0c;生产基地位于浙江桐乡。是一家有着十几年金属制品及仓储物流设施设备生产经验&#xff0c;专业设计、生产、制造各类物流钢制托盘&#xff0c;物流手推车&#xff0c;仓储货架及门店展架&#xff0c;宣传展架等物…

第十一周学习笔记DAY.1-MySQL

一、下载、安装MySQL数据库 二、启动/停止MySQL服务 方式一&#xff1a; 右击“计算机”-->“管理”-->“服务和应用程序”-->“服务”-->“MySQL”-->选择相应的服务操作 方式二&#xff1a; 启动服务&#xff1a; Windo…

Pytorch读取自己的数据集

数据集 流程图 导包设置tfs创建datasets.ImageFolder创建torch.utils.data.DataLoader() import time import os from tqdm import tqdm import pandas as pd import numpy as np import torch import torchvision import torch.nn as nn import torch.nn.functional as F im…

7天精通Web APIs——正则阶段案例(理论+实战)(第六天)

正则表达式的定义和使用 定义&#xff1a;是一种匹配模式&#xff0c;用于匹配字符串中字符组合 作用&#xff1a;表单验证&#xff08;匹配&#xff09;、过滤敏感词&#xff08;替换&#xff09;、字符串中提取我们想要的部分&#xff08;提取&#xff09; 使用分为两步&…

KP85321 650V栅极驱动器兼容代替IR2110 中高压高低边驱动解决方案

KP85321是一款中高压半桥 / 高低边驱动芯片系列&#xff0c;以高可靠性、低温漂、大驱动电流 为主要特性&#xff0c;输出开关节点 dv/dt 可达 100V/nS。高低侧通道相互独立&#xff0c;允许同时导通。 关于 中高压半桥 / 高低边驱动芯片&#xff1a; 中高压半桥/高低边驱动芯…

mybatis 跨库查询 mysql

跨库&#xff0c;表关联的查询&#xff0c;实现起来很简单&#xff1a; select a.uid from ucenter.user a , database user_profile b where a.uid b.uid;只要在表的前边加上库名即可。 这个是我项目中xml 中的一个例子&#xff0c;项目采用的是springmvc,持久层框架就是my…

高等代数复习:多项式矩阵

文章目录 多项式矩阵基本定义和性质相抵标准型 本篇文章适合个人复习翻阅&#xff0c;不建议新手入门使用 多项式矩阵 基本定义和性质 定义&#xff1a;多项式矩阵&#xff08; λ \lambda λ 阵&#xff09; 形如以下的矩阵 ( a 11 ( λ ) a 12 λ ⋯ a 1 n ( λ ) a 21 ( …

MySQL:MySQL索引结构为什么选用B+树?

一、前言 当我们发现SQL执行很慢的时候&#xff0c;自然而然想到的就是加索引。在MySQL中&#xff0c;无论是Innodb还是MyIsam&#xff0c;都使用了B树作索引结构。我们知道树的分类有很多&#xff0c;MySQL中使用了B树作索引结构&#xff0c;这是为什么呢&#xff1f; 本文将从…

Python数独游戏

数独&#xff08;Sudoku&#xff09;是一种逻辑性的数字填充游戏&#xff0c;玩家需要在一个分为九宫的81格网格上填入数字&#xff0c;同时满足每一行、每一列以及每个宫&#xff08;3x3的子网格&#xff09;的数字都不重复。 在Python中实现一个数独游戏可以涉及到多个方面&…

如何用易查分制作扫码签到,支持在线签名,一键导出名单!

学校在开展培训讲座、研讨会等活动会议时&#xff0c;通常都需要参会人在纸质名单上签字表示到场。负责人不仅要耗费大量人力引导签到&#xff0c;如果人数众多&#xff0c;场面混乱&#xff0c;签到效率会十分低下。 易查分能够制作安全、高效的二维码签到系统&#xff0c;参会…

JsonConfig配置Clob

1.情景展示   项目使用的是Oracle数据库&#xff0c;并且表中的某些字段类型设置成了clob类型&#xff1b; 当我们从数据库读取数据的时候&#xff0c;需要单独对clob字段进行处理&#xff0c;否则返回的是内存地址。 2.具体分析 除了在ibatis和java当中进行数据转换外&…

Vue-treeselect:为Vue应用程序提供强大选择器的指南

官方文档&#xff1a; https://www.javasoho.com/vuetreeselect/index_cn.htmlgithub地址&#xff1a; https://github.com/riophae/vue-treeselect在构建复杂的Web应用时&#xff0c;我们常常需要一个功能丰富且易于定制的选择器组件来提升用户体验。Vuetreeselect就是这样一…