Java语法之封装

news2025/8/13 12:20:10

我们应该都知道Java面向对象的三大特性:封装,继承,多态,今天小编给大家分享封装这个概念以及使用,我们开始吧:

目录

🎉封装的概念 

🎉封装的使用

🎉封装的好处


💭封装的概念

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法,封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

💭封装的使用

1.初识封装

首先来看一段代码:

class Person {
    public String name;
    public int age;

    public void show() {
        System.out.println(name + "的年龄是" + age);
    }
}

public class Test_1 {
    public static void main(String[] args) {
        Person person = new Person();
        person.name = "张三";
        person.age = 18;
        person.show();
    }
}

这段代码中我们创建了一个Person类,并且创建了成员变量和方法,在主函数中new了一个对象,通过person引用去给成员变量赋值,并且代码正常运行,结果:


 

猜想一下,我们将部分代码加以修改,如果我用private去修饰成员变量是否可以让代码正常运行呢???

class Person {
    private String name;
    private int age;

    public void show() {
        System.out.println(name + "的年龄是" + age);
    }
}

我们可以看到,这里代码就会报错了, 原因是此时被peivate修饰的name和age只能在当前这个类(Person类)里面使用,在类外是没有权限访问的,这里也就是我们要说的封装!


2.封装的使用

那么我们如何给成员变量赋值呢???

这里我们通过构造方法可以解决,代码如下:

class Person {
    public String name;
    public int age;

    public void show() {
        System.out.println(name + "的年龄是" + age);
    }

    public Person(String name, int age) {    //构造方法
        this.name = name;
        this.age = age;
    }
}

public class Test_1 {
    public static void main(String[] args) {
        Person person = new Person("张三",18);
        /*person.name = "张三";
        person.age = 18;
        person.show();*/
        person.show();
    }
}

当然我们可以使用set和get这样的公开方法去给成员赋值:

class Person {
    public String name;
    public int age;

    public void show() {
        System.out.println(name + "的年龄是" + age);
    }

    /*public Person(String name, int age) {    //构造方法
        this.name = name;
        this.age = age;
    }*/

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

public class Test_1 {
    public static void main(String[] args) {
        Person person = new Person();
        /*person.name = "张三";
        person.age = 18;
        person.show();*/
        person.setName("李四");
        person.setAge(18);
        person.show();
    }
}

 💭封装的好处

  • 1. 良好的封装能够减少耦合。

  • 2. 类内部的结构可以自由修改。

  • 3. 可以对成员变量进行更精确的控制。

  • 4. 隐藏信息,实现细节。


 以上就是今天和大家分享的知识,如对上文有意见或者有错误,还请大佬们斧正,觉得有帮助的童鞋们,创作不易,蟹蟹三连!

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

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

相关文章

论文写作:word连续交叉引用

文章目录一、问题背景二、步骤一、问题背景 在写作得时候,使用word的 “交叉引用”功能可以形成超链接格式的标号。但是交叉引用每次只能选择一篇论文,在连续选择多篇论文的时候,就是 “[1][2][3]” 而不是 “[1-3]” 这样的格式。 如图&…

redis set zset key 常用命令

list 可以重复 set不可以 list 有序 set元素位置无序 key常用命令 #1. 存储数据 sadd key member [member ...] 获取的结果是无序的 #2. 获取数据(获取全部数据) smembers key #3. 随机获取一个数据(获取的同时,移除数据&#…

22.11.17打卡 mysql学习笔记

为了不挂科...... 内连接 2022年11月17日 19:34 分为隐式内连接和显式内连接 区别是: 表的连接形式和链接条件的表现形式; 链接条件的表现形式 隐式内连接 显式内连接 外连接 2022年11月17日 19:44 外连接分为左外连接和右外连接 左外连接 右外连接 自连接 2022年11月17…

为什么vue3要选用proxy,好处是什么?

提问 Object.defineProperty()和proxy的区别?为什么vue3要选用proxy,好处是什么? proxy Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。 Pr…

微软推出Azure量子资源估算器,加速量子算法研发

​ (图片来源:网络) 近期,微软推出了Azure量子资源估算器,以帮助研发人员检查他们的算法是否可以在未来规模化的量子计算机上运行,并在不同硬件之间进行比较,同时估算在这些系统上执行量子应用…

JVM——垃圾回收机制和内存分配策略

文章目录垃圾回收的垃圾是什么如何判断一个对象是不是垃圾引用计数法可达性分析算法Java的引用垃圾回收基础算法标记清除标记整理标记复制分代垃圾回收GC分析实例HotSpot算法实现细节根节点枚举记忆集与卡表为什么需要记忆集卡表写屏障写屏障(Write Barrier&#xf…

如何实现 MySQL 增删改查操作

文章目录1.新增1.1 不指定列插入1.2 指定列插入1.3 一次性插入多行2.查询2.1 全列查询(查询表中的所有列)2.2 指定列查询2.3 在查寻过程中进行简单计算(列和列之间)2.4 给查询结果的列指定一个别名2.5 查询的时候针对列来去重&…

【AI绘画 | draft意间】国产draft推荐及AI绘画背后的原理解读

个人名片: 🐼作者简介:一名大二在校生,喜欢编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:&#x1f5bc…

计算机网络—网络层

网络协议 IP 概述 因为网络层是整个互联网的核心,因此应当让网络尽可能简单。网络层提供简单灵活的、无连接的、尽最大努力交互的数据报服务。 使用 IP 协议,可以把异构的物理网络连接起来,使网络层像统一的网络 与 IP 协议配套使用有三种…

Molecular Psychiatry:神经成像预测模型在心理健康领域的未来趋势

使用神经成像数据的预测建模有潜力提高我们对精神障碍的神经生物学基础和推定的信息干预的理解。因此,有大量的文献回顾了已发表的研究,机器学习的数学基础,以及使用这些方法的最佳实践。随着我们在心理健康和机器学习方面的知识不断发展&…

【分布式应用】GFS分布式文件系统

文件系统:用于存储和管理文件的相关系统。 FS(文件系统)的作用:从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。 具体地说,它负责为用户建…

Windows重启时的电脑蓝屏怎么办?

在使用Windows电脑时,最害怕的是遇到系统突然崩溃的情况,特别是出现蓝屏。蓝屏可能会导致数据丢失、无法启动Windows等糟糕的情况。那电脑重启时蓝屏怎么解决? 解决方法一、使用系统还原撤消最近的更改 Windows中的系统还原功能是一个便利的…

html5+css3

目录 一、html简介: 1、什么是网页? 2、什么是html? 3、网页的形成 二、常用的浏览器 三、web标准(重点) 1、为什么要使用web标准? 2、遵循web标准的优点: 四、html语法规范 1、基本语…

Hadoop架构、组件、及其术语汇总和理解

推荐大象教程,介绍Hadoop、HDFS、MapReduce架构和工作原理相对来说非常的清晰。其内容是与《Hadoop the Definitive Guide》基本一致的。讲解的很细致、细节,又带了一些个人的理解和举例子,比较易懂,是比Hadoop官网更值得一看的入…

Assignment写作怎么避免不及格的情况出现?

俗语说得好,犯错误是在所难免的。中西方教育方式大不相同,对Assignment的写作要求也有所不同。刚到国外时,留学生对国外的教育制度和学习过程缺乏了解。难怪在日常学习中,尤其是在英文Assignment写作过程中,留学生都会…

限时开源,来自大佬汇总的Kafka限量笔记,绝对不会后悔!

前言 今天我们来聊聊 Kafka ,主要是带你重新认识一下 Kafka,聊一下 Kafka 中比较重要的概念和问题。 我们现在经常提到 Kafka 的时候就已经默认它是一个非常优秀的消息队列了,我们也会经常拿它给 RocketMQ、RabbitMQ 对比。我觉得 Kafka 相…

GaussDB CN服务异常实例分析

摘要:先通过OPS确认节点状态是否已经恢复,或登录后台执行cm_ctl query -Cv确认集群是否已经Normal。本文分享自华为云社区《【实例状态】GaussDB CN服务异常》,作者:酷哥。 确认节点状态 先通过OPS确认节点状态是否已经恢复&…

sqoop部署

一、实验介绍 1.1实验内容 本次实验包括sqoop安装部署及利用Sqoop在mysql数据库与hive之间进行数据迁移。 1.2实验知识点 Sqoop安装 mysql到Hive数据迁移 1.3实验环境 Sqoop-1.4.7 网易云平台 1.4实验资源 资源名称存储目录Sqoop安装包/opt/software/package/1.5实验步…

原生 canvas 如何实现大屏?

前言 可视化大屏该如何做?有可能一天完成吗?废话不多说,直接看效果,线上 Demo 地址 lxfu1.github.io/large-scree…。 看完这篇文章(这个项目),你将收获: 全局状态真的很简单&…

多篇《Nature》和《Science》关于马约拉纳费米子的研究论文近日被撤稿

马约拉纳费米子(英语:Majorana fermion)是一种假设粒子,它的反粒子就是它本身,1937年,埃托雷马约拉纳发表论文假想这种粒子存在,因此而命名。与之相异,狄拉克费米子,指的…