Java中的访问修饰符有哪些

在 Java 中,访问修饰符(Access Modifiers)用于控制类、方法、变量和构造器的访问权限。Java 提供了四种访问修饰符,分别是:

  • public
  • protected
  • default(包私有,没有显式修饰符)
  • private

public

  • 访问范围:最大范围的访问权限。
  • 作用:
    • 被 public 修饰的类、方法、变量或构造器可以在任何地方访问。
    • 如果类是 public,则类名必须与文件名一致。
public class MyClass {public int myVar;public void myMethod() {System.out.println("Public Method");}
}

protected

  • 访问范围:
    • 同一包内的类可以访问。
    • 不同包中的子类可以访问。
  • 作用:
    • 主要用于继承场景,允许子类访问父类的成员。
package com.example;public class Parent {protected int myVar;protected void myMethod() {System.out.println("Protected Method");}
}package com.another;import com.example.Parent;public class Child extends Parent {void accessParent() {myVar = 10;       // 可以访问 protected 变量myMethod();       // 可以访问 protected 方法}
}

default(包私有)

  • 访问范围:
    • 同一包内的类可以访问。
    • 不同包中的类无法访问。
  • 作用:
    • 如果不显式指定访问修饰符,则默认为 default。
package com.example;class MyClass {int myVar; // default 访问权限void myMethod() {System.out.println("Default Method");}
}

private

  • 访问范围:
    • 仅限当前类内部访问。
  • 作用:
    • 用于封装类的内部实现细节,防止外部直接访问。
public class MyClass {private int myVar;private void myMethod() {System.out.println("Private Method");}public void setMyVar(int value) {this.myVar = value; // 可以在类内部访问 private 变量}
}

访问修饰符的总结

访问修饰符类内部同一包内不同包的子类不同包的非子类
public✔️✔️✔️✔️
protected✔️✔️✔️
default✔️✔️
private✔️

访问修饰符的使用场景

public:
用于暴露 API,如工具类的方法或常量。例如:public static final int MAX_VALUE = 100;

protected:
用于允许子类扩展父类的功能。例如:protected void init() { … }

default:
用于包内共享的辅助类或工具方法。例如:void helperMethod() { … }

private:
用于封装类的内部实现细节。例如:private String secretKey;

注意事项

  • 类的访问修饰符只能是 public 或 default(包私有)。
  • 接口中的方法默认是 public,变量默认是 public static final。
  • 构造器可以使用 public、protected、default 或 private。
  • private 构造器常用于单例模式或工具类。
package com.example;public class AccessExample {public int publicVar = 1;protected int protectedVar = 2;int defaultVar = 3; // default 访问权限private int privateVar = 4;public void publicMethod() {System.out.println("Public Method");}protected void protectedMethod() {System.out.println("Protected Method");}void defaultMethod() {System.out.println("Default Method");}private void privateMethod() {System.out.println("Private Method");}
}class AnotherClass {void testAccess() {AccessExample example = new AccessExample();System.out.println(example.publicVar);       // 可以访问System.out.println(example.protectedVar);    // 可以访问System.out.println(example.defaultVar);      // 可以访问// System.out.println(example.privateVar);  // 编译错误,无法访问 private 变量}
}

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

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

相关文章

【公务员考试】高效备考指南

高效备考指南:从计划制定到心态调整的全面攻略 公务员考试竞争激烈,备考过程既需要科学规划,也需要持之以恒的努力。结合多位高分考生的经验与专业机构的指导,本文整理了一套系统化的备考策略,涵盖目标设定、学习方法…

工程实践:如何使用SU17无人机来实现室内巡检任务

阿木实验室最近发布了科研开发者版本的无人机SU17,该无人机上集成了四目视觉,三维激光雷达,云台吊舱,高算力的机载计算机,是一个非常合适的平台用于室内外巡检场景。同时阿木实验室维护了多个和无人机相关的开源项目。…

强大的CSS变量

在 CSS 中,变量(Custom Properties) 允许你定义可重用的值,方便在整个样式表中使用和修改。CSS 变量的基本语法如下: 1. 定义 CSS 变量 CSS 变量通常在 :root 伪类中定义,以便它们可用于整个文档&#xf…

蓝桥杯嵌入式赛道复习笔记1(led点亮)

前言 基础的文件创建,参赛资源代码的导入,我就不说了,直接说CubeMX的配置以及代码逻辑思路的书写,在此我也预祝大家人人拿国奖 理论讲解 原理图简介 1.由于存在PC8引脚到PC15引脚存在冲突,那么官方硬件给的解决方案…

Linux进程1.0--task_struct

1.硬件:冯诺依曼体系结构: 单个分析:、 数据流向:数据必须先进入输入设备,再到存储器,然后由存储器给控制器,控制器收到以后进行相应的处理后,再传回存储器,存储器最终传…

本地部署Jina AI Reader:用Docker打造你的智能解析引擎

本地部署Jina AI Reader:用Docker打造你的智能解析引擎 🌟 引言:为什么需要本地部署?📌 场景应用图谱🔧 部署指南(Linux环境)1. 环境准备2. Docker部署3. 验证服务状态 &#x1f680…

贪心算法简介(greed)

前言: 贪心算法(Greedy Algorithm)是一种在每个决策阶段都选择当前最优解的算法策略,通过局部最优的累积来寻求全局最优解。其本质是"短视"策略,不回溯已做选择。 什么是贪心、如何来理解贪心(个人对贪心的…

代码随想录day17 二叉树part05

654.最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums …

宇树人形机器人开源模型

1. 下载源码 https://github.com/unitreerobotics/unitree_ros.git2. 启动Gazebo roslaunch h1_description gazebo.launch3. 仿真效果 H1 GO2 B2 Laikago Z1 4. VMware: vmw_ioctl_command error Invalid argument 这个错误通常出现在虚拟机环境中运行需要OpenGL支持的应用…

通过特征值和特征向量实现的图像压缩和特征提取

前文,我们在学习人工智能的线性代数基础的时候,就了解到,矩阵在人工智能中被广泛使用,接下来我们就从大家非常常见的图像开始,深度理解矩阵在人工智能中的应用。有关线性代数基础的文章可以看的我CSDN:人工智能中的线性…

蓝桥杯2023年第十四届省赛真题-整数删除 暴力-->链表+小根堆

题目来自DOTCPP: 思路: ①每次找到数列中的最小值下标,然后用状态数组st标记它,相当与删除它,之后就不会访问它。 ②对最小值下标左边和右边判断一下,看有没有数字,如果有就把最小值加到两边第…

springboot438-基于SpringBoot的数字化教学资源管理系统(源码+数据库+纯前后端分离+部署讲解等)

💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm&#xf…

蓝桥杯刷题——第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

一、0握手问题 - 蓝桥云课 算法代码&#xff1a; #include <iostream> using namespace std; int main() {int sum0;for(int i49;i>7;i--)sumi;cout<<sum<<endl;return 0; } 直接暴力&#xff0c;题意很清晰&#xff0c;累加即可。 二、0小球反弹 - 蓝…

跨境卫士跟vps哪个更好用?跨境卫士为卖家提供固定IP环境

跨境卫士是通过为卖家提供固定的环境 i p来隔离本地电脑环境&#xff0c;为卖家创造一个真实独立的物理环境&#xff0c;让买家再任意电脑&#xff0c;任意网络下都能够安全的管理账号。跨境卫士和紫鸟原理一样&#xff0c;是通过为卖家提供固定的环境 i p来隔离本地电脑环境&a…

coding ability 展开第四幕(滑动指针——巩固篇)超详细!!!!

文章目录 前言水果成篮思路 找到字符串中所有字母异位词思路 串联所有单词的子串思路 最小覆盖子串思路 总结 前言 本专栏上一篇博客&#xff0c;带着大家从认识滑动窗口到慢慢熟悉 相信大家对滑动窗口已经有了大概的认识 其实主要就是抓住——一段连续的区间 今天来学习一些滑…

图解AUTOSAR_CP_BSW_General

AUTOSAR BSW通用规范详解 AUTOSAR基础软件模块通用规范与架构解析 目录 1. 概述 1.1. AUTOSAR BSW通用规范简介1.2. 文档目的与范围2. BSW模块文件结构 2.1. 标准文件组织2.2. 命名规范3. BSW模块接口 3.1. 接口类型3.2. 模块API3.3. 配置参数4. BSW通用架构 4.1. 分层架构4.2.…

如何在Futter开发中做性能优化?

目录 1. 避免不必要的Widget重建 问题&#xff1a;频繁调用setState()导致整个Widget树重建。 优化策略&#xff1a; 2. 高效处理长列表 问题&#xff1a;ListView一次性加载所有子项导致内存暴涨。 优化策略&#xff1a; 3. 图片加载优化 问题&#xff1a;加载高分辨率…

组件通信框架ARouter原理剖析

组件通信框架ARouter原理剖析 一、前言 随着Android应用规模的不断扩大&#xff0c;模块化和组件化开发变得越来越重要。ARouter作为一个用于帮助Android应用进行组件化改造的框架&#xff0c;提供了一套完整的路由解决方案。本文将深入分析ARouter的核心原理和实现机制。 二…

Netty启动源码NioEventLoop剖析accept剖析read剖析write剖析

学习链接 NIO&Netty - 专栏 Netty核心技术十–Netty 核心源码剖析Netty核心技术九–TCP 粘包和拆包及解决方案Netty核心技术七–Google ProtobufNetty核心技术六–Netty核心模块组件Netty核心技术五–Netty高性能架构设计 聊聊Netty那些事儿 - 专栏 一文搞懂Netty发送数…

2024年12月CCF-GESP编程能力等级认证C++编程一级真题解析

一级真题的难度: ‌ CCF-GESP编程能力等级认证C++编程一级真题的难度适中‌。这些真题主要考察的是C++编程的基础知识、基本语法以及简单的算法逻辑。从搜索结果中可以看到,真题内容包括了选择题、编程题等题型,涉及的内容如C++表达式的计算、基本输入输出语句的理解…