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();
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么防止源代码防泄密

随着数字化时代的到来&#xff0c;源代码作为企业和个人的重要资产之一&#xff0c;承载着无价的知识和创新。然而&#xff0c;源代码泄露已成为当今信息安全领域的重要挑战之一&#xff0c;给企业带来了严重的经济损失和声誉风险。面对这一挑战&#xff0c;我们有责任加强对源…

【Power BI】DAX语言 VS Power Query M语言

DAX&#xff08;Data Analysis Expressions&#xff09;和Power Query M语言是Microsoft Power BI和Excel中的两种强大的数据处理和分析工具。尽管它们在许多方面都有重叠之处&#xff0c;特别是用于数据建模和数据转换&#xff0c;但它们在用途、语法和功能上有显著的区别。本…

干部民主测评:深化管理智慧,凝聚团队力量

在现代化组织管理的广阔舞台上&#xff0c;干部民主测评扮演着举足轻重的角色。它不仅是评价干部工作实绩、能力素质的有力工具&#xff0c;更是推动组织向民主化、科学化、规范化迈进的强大引擎。通过民主测评&#xff0c;我们能够深入洞察每位干部的工作表现、群众基础和领导…

QT的创建,发现编译器有一个黄色三角形感叹号,提示说Cmake配置错误,该怎么办?

确保你安装了Cmake 2.如果你电脑之前已经装了Cmake&#xff0c;那么在qt安装中&#xff0c;即便你选择了Cmake版本&#xff0c;但依旧不会修改电脑的Cmake版本。这时候就会出现黄色箭头。在勾勾的地方会有一个黄色感叹符号&#xff08;我已经解决了&#xff0c;所以没有显示&a…

火遍全网的“当当狸智能激光雕刻机L1” 让创意梦想分分钟实现

当当狸首款“桌面级”智能激光雕刻机来袭&#xff0c;千万别错过。 龙年伊始&#xff0c;当当狸就迎来了新品首发——智能激光雕刻机L1。 话不多说&#xff0c;赶快来看~~ 当当狸这款智能激光雕刻机造型美观&#xff0c;设计时尚&#xff0c;堪称激光雕刻机界的颜值天花板~~ …

【八大排序算法】插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序

文章目录 一、排序的相关概念二、排序类型三、排序算法实现插入排序1.直接插入排序2.希尔排序 选择排序3.简单选择排序4.堆排序 交换排序5.冒泡排序6.快速排序递归实现非递归实现 7.归并排序递归实现非递归实现 8.计数排序 四、总结 一、排序的相关概念 排序&#xff1a;根据数…

独立服务器和云服务器哪个好?

在当今数字时代&#xff0c;网站托管是任何在线业务成功的关键要素之一。但是&#xff0c;当谈到选择正确的托管解决方案时&#xff0c;很容易陷入独立服务器与云服务器之间的抉择。两者都有各自的优势和限制&#xff0c;因此在决定哪种类型的托管适合您的业务之前&#xff0c;…

Samtec技术分享 | 电源/信号高密度阵列的新视角

【摘要/前言】 “角度”&#xff0c;这个词每天都出现在我们的生活中&#xff0c;有物理学的角度&#xff0c;如街边的拐角&#xff0c;还有视觉上的角度和观点中的角度~ Samtec新型 AcceleRate mP 高密度电源/信号互连系统正是从电源完整性 90度旋转的不同角度中诞生的。 …

基于Java+SpringBoot+vue+elementui 实现猜灯谜答题抽奖系统

目录 系统简介效果图1、手机答题端2、后台系统管理 源码结构源码下载地址技术交流 博主介绍&#xff1a; 计算机科班人&#xff0c;全栈工程师&#xff0c;掌握C、C#、Java、Python、Android等主流编程语言&#xff0c;同时也熟练掌握mysql、oracle、sqlserver等主流数据库&…

通过cmakelist生成与调用C++动态链接库

文章目录 前言生成动态链接库样例项目说明修改cmakelist 调用动态链接库修改配置文件修改原来外层的CMakeLists.txt 总结 前言 此前有写过用编译工具链直接通过命令行的方式生成与调用C动态链接库的方法&#xff0c;本文记录下通过cmake来实现so的生成。 生成动态链接库 样例…

C++指针和动态内存分配细节,反汇编,面试题05

文章目录 20. 指针 vs 引用21. new vs malloc 20. 指针 vs 引用 指针是实体&#xff0c;占用内存空间&#xff0c;逻辑上独立&#xff1b;引用是别名&#xff0c;与变量共享内存空间&#xff0c;逻辑上不独立。指针定义时可以不初始化&#xff1b;引用定义时必须初始化。指针的…

Java 对象序列化

序列化&#xff1a;把对象转化为可传输的字节序列过程称为序列化。 反序列化&#xff1a;把字节序列还原为对象的过程称为反序列化 序列化的作用是方便存储和传输&#xff0c;细节可参考如下文章&#xff1a; 序列化理解起来很简单 - 知乎序列化的定义 序列化&#xff1a;把对…

代码随想录训练营Day38、39:Leetcode509、70、746、62、63

Leetcode509&#xff1a; 问题描述&#xff1a; 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n -…

什么是MVC?什么是SpringMVC?什么是三层架构?

文章目录 应用分层什么是MVC?什么是 SpringMVC&#xff1f;三层架构三层架构和MVC的关系 应用分层 在讲解什么是MVC之前&#xff0c;先来理解一下什么是应用分层。 应用分层是一种软件开发设计思想&#xff0c;将应用程序划分成N个层次&#xff0c;每个层次都分别负责自己的…

本地安装nvm,管理多版本node

先卸载本地的nodejs(14.16.1) 卸载的直接可以点击win10图标→设置→应用→应用和功能 卸载nodejs即可 2. 安装nvm&#xff0c;地址&#xff1a;https://github.com/coreybutler/nvm-windows/releases 安装目录时尽量不要出现特殊字符还有空格&#xff0c;否则会在nvm use xxx的…

mysql实现隔离性——锁

锁主要解决写-写问题&#xff0c;mvcc用来解决读-写问题 MyISAM不使用行级锁&#xff0c;主要使用表锁 MyISAM存储引擎主要使用表锁&#xff08;table-level locking&#xff09;&#xff0c;并不支持行级锁&#xff08;row-level locking&#xff09;。当MyISAM存储引擎执行…

OpenCV人脸识别,报错缺少haarcascade_frontalface_default.xml文件解决方案(随手记)

使用pip安装的opencv库可能会缺少进行人脸识别的haarcascade_frontalface_default.xml等文件。 可以通过github直接进行下载&#xff0c;再放到需要使用的python文件目录下 单击连接&#xff0c;github人脸识别库-link 找到对应需要的xml文件&#xff0c;这里我举例为haarcas…

01软件下载安装和P解

凯哥英语视频 软件下载安装和P解 凯哥英语视频1.官网直接下&#xff0c;专业版安装不会有人不会吧实在下载不到就去我这百度云吧结语 1.官网直接下&#xff0c;专业版 点击前往逛网下载https://www.jetbrains.com/pycharm/ 下载专业版&#xff0c;奶茶外卖都能点&#xff0c;只…

《企业科技与发展》是什么级别的期刊?是正规期刊吗?

问题解答 问&#xff1a;《企业科技与发展》期刊怎么样&#xff1f; ​答&#xff1a;企业科技与发展》&#xff08;月刊&#xff09;1985年创刊&#xff0c;由广西科学技术厅主管、广西科学技术情报研究所主办&#xff0c;国内外公开发行。主要栏目:科技对策与研究、企业科技…

优化Mac系统,TinkerTool一键掌控!

TinkerTool System for Mac是一款专为Mac用户设计的系统设置维护工具。这款软件不仅具备执行系统维护任务的能力&#xff0c;如管理文件和调整系统或用户设置&#xff0c;还包含一系列功能强大的工具&#xff0c;旨在帮助用户解决、修复、排除故障或修复系统错误和损坏的帐户等…