Java中的访问修饰符有哪些?各有什么作用?

Java中有四种访问修饰符(Access Modifiers),它们定义了类、方法、变量和构造函数的访问控制级别。这些修饰符从最宽松的访问级别到最严格的访问级别依次为:public, protected, default(没有修饰符时使用的默认访问级别)和 private

public

  • public修饰符是访问权限最宽松的,它表示被修饰的类、成员变量、方法等可以被任何其他类访问。
  • 如果类是公共的(public),那么它可以被任意外部类访问。

示例:

public class PublicClass {public int publicVar = 5;
}

protected

  • protected修饰符表示变量、方法等可以被同一包内的任何其他类以及不同包中的子类访问。
  • protected提供了包内访问与通过继承访问的结合。

示例:

class SamePackageClass {protected int protectedVar = 10;
}

default

  • 当没有指定访问修饰符时,默认使用default级别,也称为包级别访问(Package-Private)。这意味着只有同一个包内的类可以访问这些成员。
  • 默认访问修饰符不使用任何关键字,这是缺省的访问级别。

示例:

class DefaultAccessClass {int defaultVar = 15;
}

private

  • private修饰符是访问权限最严格的,表示被修饰的变量、方法等只能在其定义的类内部被访问。
  • private通常用于隐藏类的实现细节和保护类的数据。

示例:

public class PrivateMembersClass {private int privateVar = 20;
}

总结

修饰符本类同包子类全局
public
protected
default
private

最佳实践

使用访问修饰符时,最佳实践是遵循最小权限原则:除非有充足的理由,否则应尽可能将访问权限设置得尽可能严格。这种做法增强了代码的封装性,减少了对象之间的依赖性,并提升了代码的可维护性和安全性。

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

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

相关文章

C++ 类对象初始化

一、默认初始化 当创建一个类的实例时,如果没有定义构造函数,系统会自动生成一个无参构造函数,并自动初始化成员变量。内置类型的变量(如int、double、指针等)会被初始化为一个未定义的值,而自定义类型的变…

基于Python的人脸识别系统设计与实现(论文+源码)_kaic

基于Python的人脸识别系统设计与实现 摘 要 随着人工智能的发展,人脸识别系统在我们的生活中越来越被广泛应用。人脸识别系统是指能够从数字图像或视频源中识别人的技术。人脸识别系统可以通过多种方法工作,但是,它们通常是通过将给定图像中的面部特征与…

论文笔记总结

写论文不能只讲概念,一定要结合项目理论实际。》例如某xxx具体的项目例子,不能描述某一个软件的功能。 1.历年真题 2.十段式划分(回应子题目,三个子题目) 3.论文模板,万能模板 4.具体主题相关 第一个主…

202012青少年软件编程(Python)等级考试试卷(一级)

第 1 题 【单选题】 运行下方代码段,输出是6,则输入的可能是( )。 a eval(input())print(a)A :8%2 B :8/2 C :3*2 D :3**2 正确答案:C 试题解析: 第 2 题 【单选题】 关于Python变量,下列叙述正确的是&#x…

Rust基本特性补充

虚幻数据PhantomData 实际上&#xff0c;结构体本身也是可以有生命周期的&#xff0c;例如: struct Tmp<a>{index: &a u32 } 上述声明中&#xff0c;虽然index为一个引用&#xff0c;但是这样声明后&#xff0c;相当于告诉编译器&#xff0c;Tmp对象的生命周期会和…

Spring Cloud——LoadBalancer

Spring Cloud——LoadBalancer 一、负载均衡&#xff08;LoadBalance&#xff09;1.LoadBalancer本地负载均衡客户端 VS Nginx服务端负载均衡区别 二、LoadBalancer1.Spring RestTemplate as a LoadBalancer Client2.编码使用DiscoveryClient动态获取所有上线的服务列表3.从默认…

《自动机理论、语言和计算导论》阅读笔记:p215-p351

《自动机理论、语言和计算导论》学习第 11 天&#xff0c;p215-p351总结&#xff0c;总计 37 页。 一、技术总结 1.constrained problem 2.Fermat’s lats theorem Fermat’s Last Theorem states that no three positive integers a, b and c satisfy the equation a^n b…

SNMP自动遍历所有节点并GET

echo on setlocal EnableDelayedExpansion SnmpWalk.exe -r:10.253.2.38 -v:2 -t:5 -c:“public_default” > 1.txt REM snmp mib节点遍历前记录设备cpu和内存利用率 SnmpGet.exe -q -r:10.253.2.38 -v:2 -t:5 -c:“public_default” -o:1.3.6.1.4.1.31648.3.15.10.0 >&…

unity中 UnityWebRequest.Post和 UnityWebRequest uwr = new UnityWebRequest两种方法有什么区别

在Unity中&#xff0c;UnityWebRequest.Post 和 UnityWebRequest uwr new UnityWebRequest(...) 是两种不同的方式来创建和发送HTTP POST请求&#xff0c;但它们之间有一些关键的区别和用法上的差异。 1. UnityWebRequest.Post (静态方法) UnityWebRequest.Post 是一个静态方…

PostgreSQL数据类型总结

PostgreSQL数据库相比其他数据库&#xff0c;支持更多的数据类型&#xff0c;包括常用的数值类型、字符串类型、日期/时间类型外&#xff0c;还有几何类型、网络地址类型、xml类型和json类型&#xff0c;且还可以使用CREATE TYPE自行添加数据类型&#xff0c;本文主要介绍Postg…

过渡与动画

单元素/组件过渡 Vue在插入、更新或者移除 DOM 时&#xff0c;提供多种不同方式的过渡效果&#xff08;一个淡入淡出的效果&#xff09; 在条件渲染&#xff08;使用v-if&#xff09;、条件展示&#xff08;使用v-show&#xff09;、动态组件、组件根节点等情形中&#xff0c;可…

python算法题

需求 代码 class Solution:def searchInsert(self, nums: List[int], target: int) -> int:if max(nums) >target:for i in range(len(nums)-1):if nums[i1] > target and nums[i] <target:return i1if max(nums) <target:return len(nums)if min(nums) > …

操作系统(2)——进程线程

目录 小程一言专栏链接: [link](http://t.csdnimg.cn/8MJA9)基础概念线程详解进程详解进程间通信调度常用调度算法 重要问题哲学家进餐问题问题的描述策略 读者-写者问题问题的描述两种情况策略 总结进程线程一句话 小程一言 本操作系统专栏&#xff0c;是小程在学操作系统的过…

【tcl脚本实践Demo 1】文本生成、匹配、修改、读写

引言 在芯片设计的流程中,各种EDA工具在设计、综合、布局布线、验证、时序分析等等环节都会产出大量的文件信息。这些信息是海量的,如果单纯靠程序员自己查看信息效率很低并且很容易纰漏。所以脚本语言可以很好的解决这个问题,可以利用脚本语言匹配到敏感的信息,完成对信息…

let 和 const 区别

在JavaScript中&#xff0c;let 和 const 是两种用于声明变量的关键字&#xff0c;它们都是ES6&#xff08;ECMAScript 2015&#xff09;引入的新特性&#xff0c;旨在改进变量声明的方式&#xff0c;与传统的 var 关键字相比&#xff0c;提供了更清晰的变量作用域管理和更好的…

用VHDX的方式安装Windows系统

最近尝试了用VHDX的方式安装Windows系统&#xff0c;以下为测试操作的过程。 1.创建并附加虚拟硬盘 推荐使用图形界面操作&#xff0c;磁盘管理—操作—创建 VHD&#xff0c;选择虚拟硬盘位置&#xff0c;一般放在系统盘之外。虚拟硬盘格式建议选择 VHDX&#xff0c;虚拟硬盘类…

240 基于matlab的飞行轨迹仿真程序

基于matlab的飞行轨迹仿真程序&#xff0c;多种不同的飞行轨迹&#xff0c;输出经度、纬度、高度三维轨迹&#xff0c;三个方向的飞行速度。程序已调通&#xff0c;可直接运行。 240 飞行轨迹仿真 三维轨迹 飞行速度 - 小红书 (xiaohongshu.com)

限流的学习

限流算法&#xff1a; 滑动窗口算法 滑动日志算法 漏桶算法 令牌桶算法 redis分布式限流 1、固定窗口限流 固定窗口算法又叫计数器算法&#xff0c;是一种简单方便的限流算法。主要通过一个支持原子操作的计数器来累计 1 秒内的请求次数&#xff0c;当 1 秒内计数达到限流阈值…

C#知识|面向对象编程中实例方法的封装与应用总结

哈喽,你好,我是雷工! 本节学习面向对象编程中实例方法的封装与应用,以下为学习笔记。 01 方法定义 访问修饰符 返回值类型 方法名(参数1,参数2……) {//此处编写方法的主要内容,功能实现的具体过程 return 返回值;//如果方法有返回值需要此语句,如果没有返回值,那…

Golang图片验证码的使用

一、背景 最近在使用到Golang进行原生开发&#xff0c;注册和登录页面都涉及到图片验证码的功能。找了下第三方库的一些实现&#xff0c;发现了这个库用得还是蛮多的。并且支持很多类型的验证方式&#xff0c;例如支持数字类型、字母类型、音频验证码、中文验证码等等。 项目地…