Java中的访问修饰符详解

目录

1. public

2. protected

3. Default (无修饰符)

4. private


在Java编程语言中,访问修饰符是非常重要的一部分,它决定了类、变量、方法和构造器的访问级别。Java中主要有四种访问修饰符:publicprotecteddefault(没有修饰符时使用)和private。这些修饰符帮助程序员控制其他类对某个类内部成员的访问级别。接下来,我们将从功能、使用场景及代码示例等方面详细探讨这些修饰符。

1. public

public修饰符是最宽松的访问级别。被public修饰的类、方法、构造器或成员变量可以被任何其他类访问。

应用场景:

  • 公共API的功能方法和常量。
  • 通常在公共接口中使用。

代码示例:

public class Car {public int wheelCount;public Car(int wheelCount) {this.wheelCount = wheelCount;}public void display() {System.out.println("车轮的数量是:" + wheelCount);}
}class Test {public static void main(String[] args) {Car car = new Car(4);car.display();  // 输出: 车轮的数量是:4}
}

2. protected

protected修饰符提供了更多的封装性,只允许同一个包的类或者不同包中的子类访问。

应用场景:

  • 当想要隐藏类的部分成员不对外公开,但允许子类访问时。
  • 继承关系中保护成员不被外部直接使用。

代码示例:

public class Vehicle {protected int maxSpeed;protected void setMaxSpeed(int speed) {this.maxSpeed = speed;}
}class Car extends Vehicle {public void displaySpeed() {setMaxSpeed(180);System.out.println("最大速度是:" + maxSpeed + "公里/小时");}
}class Test {public static void main(String[] args) {Car myCar = new Car();myCar.displaySpeed();  // 输出: 最大速度是:180公里/小时}
}

3. Default (无修饰符)

当没有指定访问修饰符时,使用默认访问级别,只允许在同一包内部的类访问。

应用场景:

  • 当类的功能仅供包内其他类使用时。
  • 控制同一个包内的组件访问权限。

代码示例:

class PackageClass {int count;void display() {System.out.println("数字是:" + count);}
}public class Test {public static void main(String[] args) {PackageClass obj = new PackageClass();obj.count = 15;obj.display();  // 输出: 数字是:15}
}

4. private

private修饰符是最严格的访问级别,被它修饰的数据成员、方法和构造器只能被同一个类的其他成员访问。

应用场景:

  • 隐藏类的实现细节和保护数据。
  • 控制读取和修改的权限。

代码示例:

public class Account {private double balance;private void deposit(double amount) {if (amount > 0) {balance += amount;}}public void addMoney(double money) {deposit(money);}public double getBalance() {return balance;}
}class Test {public static void main(String[] args) {Account myAccount = new Account();myAccount.addMoney(1000);System.out.println("当前余额是:" + myAccount.getBalance());  // 输出: 当前余额是:1000.0}
}

总结: Java的四种访问修饰符publicprotected、默认(无修饰符)和private,各有其用途和应用场景。理解并合理运用这些访问修饰符,可以帮助Java开发者有效地封装数据和方法,保护数据安全,同时也便于团队协作和代码维护。通过上述示例,我们可以看到不同访问级别修饰符的具体应用,这对于编写可靠和可维护的Java代码至关重要。

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

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

相关文章

行业首发|美格智能创新推出5G+Wi-Fi 7智能终端解决方案,端侧AI助力数智升维

在数字化时代的生产生活过程中,特殊场景下的通信需求愈发重要。高速、灵活、稳定的通信保障能够进一步提升生产生活的效率。随着5G网络的高速发展,一方面,其凭借低时延、高带宽、高可靠性和大规模连接的特性让移动终端的网络连接实现跨越式升…

WebSocket和HTTP请求的区别

1. 连接方式 HTTP请求:基于“请求-响应”模式。每次通信都要重新建立连接,客户端发送请求后服务器返回响应,连接就断开了。这种模式通常适合不频繁更新的数据,如静态页面的加载。WebSocket:支持长连接,连接…

Python是什么

Python在编程语言中的地位 特点使用看法 特点 优点: 语法语义简单,容易上手功能强大,应用广泛生态丰富,具有海量的成熟第三方库方便调用C/C编写的代码 缺点: 执行效率比较弱对多核并发程序不友好动态类型系统对大型项目不友好 使用 扬长避短 看法 我们要把Python当成一…

论文解析八: GAN:Generative Adversarial Nets(生成对抗网络)

目录 1.GAN:Generative Adversarial Nets(生成对抗网络)1、标题 作者2、摘要 Abstract3、导言 IntroductionGAN的介绍 4、相关工作 Related work5、模型 Adversarial nets总结 6.理论计算 Theoretical Results具体算法公式全局优化 Global O…

springdata同时集成mongodb和elasticsearch异常

错误 Invalid bean definition with name ‘bookEsRepository’ defined in com.db.repository.BookEsRepository defined in EnableMongoRepositories declared on MongoRepositoriesRegistrar.EnableMongoRepositoriesConfiguration: 产生原因 【spring-boot-starter-data…

【32】C++流

目录 C流 读写文件:文件流 对文本文件流读写 写文本文件 读文本文件 对二进制文件流读写 写二进制文件 读二进制文件 对文件流按格式读写取数据 按指定格式写文件 按指定格式读文件 C流 IO: 向设备输入数据和输出数据 C的IO流 设备: 文件控制台特定的数…

21世纪20年代了, 居然遭遇扩容U盘!

扩容u盘前些年很泛滥, 所以也有针对扩容u盘的测试软件 h2testw h2testw的工作原理很简单, 就是往u盘里写文件,写满后再读取文件进行验证 如果没有h2test, 也可以往里面考大文件, 再拷贝出来, 不出错就表示…

Navicat导入Excel数据时数据被截断问题分析与解决方案

目录 前言1. 问题分析1.1 默认字段类型的影响1.2 MySQL诊断机制的限制 2. 解决方案2.1 修改字段长度2.2 修改Excel数据以影响推断2.3 检查导入工具的设置 3. 其他注意事项3.1 注册表的修改3.2 增加自增ID 4. 结语 前言 在数据库的日常操作中,将Excel数据导入MySQL是…

ubuntu常用文件操作

1. 查看文件和目录 列出目录内容: ls列出当前目录的文件和子目录。常用参数包括: ls -l:显示详细信息(权限、所有者、大小、时间等)。ls -a:显示隐藏文件(以 . 开头的文件)。ls -h&a…

SQL Server 当前日期及其未来三天的日期

当前日期及其未来三天的日期,并分别以 YYYY-MM-DD 和 yyyyMMdd 的格式展示 1、当前日期及其未来三天的日期,以 YYYY-MM-DD的格式展示 WITH CurrentDate AS (SELECT GETDATE() AS 当前日期 ) -- 使用 CONVERT 函数 SELECTCONVERT(VARCHAR(10), 当前日期,…

Ubuntu22.04版本左右,扩充用户可使用内存

1 取得root权限后,输入命令 lsblk 查看所有磁盘和分区,找到想要替换用户可使用文件夹内存的磁盘和分区。若没有进行分区,并转为所需要的分区数据类型,先进行分区与格式化,过程自行查阅。 扩充替换过程,例如…

28.3 一致性哈希和推送数据的redirect流程

本节重点介绍 : 开启一致性哈希环变更监听处理 这个服务的节点变更了(节点宕机、扩容)就对哈希环进行重置 开启结果监听和watch服务编写pgw的http接收端 推送数据的redirect流程 一致性哈希和推送数据的redirect流程 开启一致性哈希环变更监听处理 位置 sd/rings.go当这个…

大语言模型数据处理方法(基于llama模型)

文章目录 前言一、基于huggingface的DataCollatorForSeq2Seq方法解读1、DataCollatorForSeq2Seq方法2、batch最长序列填充3、指定长度填充二、构建大语言模型数据加工模块1、数据读取2、数据加工1、数据格式2、预训练(pretrain)数据加工3、微调(sft)数据加工①、sft数据加工…

Springboot项目搭建的问题

1.第一次出现这个问题是在使用postgresql进行搭建项目的时候,但是配置文件中的驱动一致导入不了 最后发现是meaven中依赖导入不进来(不知道为什么),于是手动的在meaven中央仓库下载了对应的jar进行配置 然后项目可以正常启动 2.…

大模型系列——AlphaZero/强化学习/MCTS

AlphaGo Zero无需任何人类历史棋谱,仅使用深度强化学习,从零开始训练三天的成就已远远超过了人类数千年积累的围棋知识。 1、围棋知识 (1)如何简单理解围棋知识 (2)数子法分胜负:https://zhu…

w外链如何跳转微信小程序

要创建外链跳转微信小程序,主要有以下几种方法: 使用第三方工具生成跳转链接: 注册并登录第三方外链平台:例如 “W外链” 等工具。前往该平台的官方网站,使用手机号、邮箱等方式进行注册并登录账号。选择创建小程序外…

Jellycat玩偶界的天花板,如何用情绪营销征服成年人的心?

Jellycat的用户肯定对这个品牌有一定的了解,不知道的用户或许也看过这个很火的茄子表情包,这是Jellycat很火的一款玩偶“活泼茄子”。Jellycat,这个源自英国伦敦的高端玩具品牌,近年来在全球范围内迅速走红,摇身一变玩…

一方数据能让沃尔玛广告业务成为下一个亚马逊吗?

作者:刀客doc 在如今的广告市场可以说是热闹非凡。有Facebook、谷歌这些传统巨头,也有亚马逊、TikTok这些行业新贵涌现出来。近几年连PayPal、Netflix这些原来和广告业务八竿子打不着的平台,也都开始把勺子伸进来,想要分一杯羹。…

基于SSM土家风景文化管理系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,景点分类管理,热门景点管理,门票订单管理,旅游线路管理,系统管理 前提账号功能包括:系统首页,个人中心&…

windows 编译 breadpad

原文链接:https://gist.githubusercontent.com/vnl/f317840bfa9c638a60f2c4110872056a/raw/07185c8e86fc2faf08e3410ed3950a5c4d2e8b32/Breakpad%2520on%2520Windows ##### Building Google breakpadBuilding Google breakpad on Windows is a very painful experience because…