Java——权限修饰符
一、权限修饰符的继承访问规则
以下按访问范围从宽到窄排序:
| 修饰符 | 同包同类 | 同包子类 | 同包非子类 | 跨包子类 | 跨包非子类 |
|---|---|---|---|---|---|
public | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
protected | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
默认(包级) | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
private | ✔️ | ❌ | ❌ | ❌ | ❌ |
关键点:
private成员:子类无法直接访问,需通过父类提供的public/protected方法间接操作(如getter/setter)12。protected成员:- 允许跨包子类直接访问(如
Child类继承Parent类后可直接调用父类protected方法)。 - 同包内非子类也可访问(如
Test类与Parent同包时可直接调用protected方法)13。
- 允许跨包子类直接访问(如
- 默认(包级):仅允许同包内的子类或非子类访问。
示例:
// 父类(包com.example)
public class Parent {protected String name; // 跨包子类可访问String id; // 仅同包子类可访问private int age; // 子类不可访问
}// 子类(包com.other)
public class Child extends Parent {void accessFields() {name = "Child"; // ✔️ 允许访问protected字段// id = "123"; // ❌ 跨包无法访问默认权限字段// age = 10; // ❌ 无法访问private字段}
}
二、方法重写的权限修饰符规则
子类重写父类方法时,访问权限必须 ≥ 父类方法(保证“里氏替换原则”):
- 父类方法为
public→ 子类必须为public。 - 父类方法为
protected→ 子类可为protected或public。 - 父类方法为默认权限 → 子类可为默认、
protected或public。 - 禁止缩小权限:如父类方法为
protected,子类重写时不能改为private或默认14。
示例:
class Parent {protected void show() {} // 父类protected方法
}class Child extends Parent {@Overridepublic void show() {} // ✔️ 允许扩大权限(protected → public)// @Override// private void show() {} // ❌ 禁止缩小权限(protected → private)
}
三、构造方法与super关键字的权限限制
- 构造方法继承:
- 子类构造方法默认调用父类无参构造
super()。 - 若父类无无参构造,子类必须显式调用
super(参数),且父类对应构造方法的权限需对子类可见6。
- 子类构造方法默认调用父类无参构造
super的使用:super可调用父类的非私有方法或访问非私有字段。super不能在静态方法(如main)中使用,因为其依赖于对象实例1。
示例:
class Parent {protected Parent(int x) {} // 有参构造
}class Child extends Parent {public Child() {super(10); // ✔️ 显式调用父类protected构造方法}
}
四、官方文档补充
根据Java官方规范:
private方法:不可被继承,即使子类中出现同名方法,也视为新方法(非重写)7。final修饰符:若父类方法被声明为final,子类无法重写该方法7。
五、最佳实践
- 最小权限原则:优先使用
private,逐步放宽至protected或public。 - 继承设计:
- 若父类方法需被子类扩展,使用
protected。 - 若父类字段需被子类访问但对外隐藏,使用
protected或提供getter/setter25。
- 若父类方法需被子类扩展,使用
参考资料:12347
相关文章:
Java——权限修饰符
一、权限修饰符的继承访问规则 以下按访问范围从宽到窄排序: 修饰符同包同类同包子类同包非子类跨包子类跨包非子类public✔️✔️✔️✔️✔️protected✔️✔️✔️✔️❌默认(包级)✔️✔️✔️❌❌private✔️❌❌❌❌ 关键点…...
一周学会Flask3 Python Web开发-redirect重定向
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 前面我们学过渲染到模板页面,这个其实是一种内部的转发,浏览器地址栏地址没有变化。如果我们想重定向…...
python面向对象:方法
1. 实例方法 实例方法用于操作实例变量,必须包含 self 参数。 class Person:def __init__(self, name):self.name namedef greet(self):print(f"Hello, my name is {self.name}")person1 Person("Alice") person1.greet() # 输出ÿ…...
物联网简介集合
物联网(IoT)指的是物理设备(如电器和车辆)之间的互联互通。这些设备嵌入了软件、传感器和连接功能,使其能够相互连接并交换数据。这项技术实现了从庞大的设备网络中收集和共享数据,为打造更高效、自动化的系…...
centos下使用pyenv管理python版本
在 CentOS 上安装 pyenv 和 pyenv-virtualenv,可以按照以下步骤进行操作: ps: centos7 最高适配到3.9.* 步骤 1:安装依赖 首先,确保你的系统中安装了必需的依赖项。你可以使用以下命令安装它们: [root ~]# yum gro…...
C++:类与对象,定义类和构造函数
#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; //如何让定义一个类 // 封装 // 1、将数据和方法定义到一起。 // 2、把想给你看的数据给你看,不想给你看的封装起来。 通过访问限定符来实现 class Stack { public: //1.成…...
【Java消息队列】应对消息丢失、重复、顺序与积压的全面策略
应对消息丢失、重复、顺序与积压的全面策略 引言kafka消息丢失生产者消费者重复消费顺序消费消息积压生产者消费者其他RabbitMQ消息丢失生产者事务机制,保证生产者发送消息到 RabbitMQ Server发送方确认机制,保证消息能从交换机路由到指定队列保证消息在 RabbitMQ Server 中的…...
解锁机器学习核心算法|神经网络:AI 领域的 “超级引擎”
一、神经网络:AI 领域的 “超级引擎” 在机器学习的庞大算法体系中,有十种算法被广泛认为是最具代表性和实用性的,它们犹如机器学习领域的 “十大神器”,各自发挥着独特的作用。这十大算法包括线性回归、逻辑回归、决策树、随机森…...
Android14(13)添加墨水屏手写API
软件平台:Android14 硬件平台:QCS6115 需求:特殊品类的产品墨水屏实现手写的功能,本来Android自带的Input这一套可以实现实时展示笔迹,但是由于墨水屏特性,达不到正常的彩屏刷新的帧率,因此使用…...
flyway的ignoreMigrationPatterns
1、概述 ignoreMigrationPatterns 是 Flyway 中的一个配置选项,用于指定在迁移过程中可以忽略的迁移脚本的模式。这个选项通常用于在特定情况下跳过某些迁移脚本的执行,例如在开发环境中跳过某些测试数据脚本,或者在特定条件下忽略某些已经不…...
25年2月通信基础知识补充:多普勒频移与多普勒扩展、3GPP TDL信道模型
看文献过程中不断发现有太多不懂的基础知识,故长期更新这类blog不断补充在这过程中学到的知识。由于这些内容与我的研究方向并不一定强相关,故记录不会很深入请见谅。 【通信基础知识补充7】25年2月通信基础知识补充1 一、多普勒频移与多普勒扩展傻傻分不…...
华为动态路由-OSPF-骨干区
华为动态路由-OSPF-骨干区 一、OSPF简介 1、OSPF概述 OSPF是一种开放式的、基于链路状态的内部网关协议(IGP),用于在自治系统内部进行路由选择和通信。 OSPF是互联网工程任务组(IETF)定义的标准之一,被广…...
接口测试-API测试中常用的协议(中)
一、SOAP SOAP(Simple Object Access Protocol)即简单对象访问协议,是一种基于 XML 的用于在网络中交换结构化信息的协议,常用于 Web 服务之间的通信。以下为你详细介绍: 产生背景 在互联网发展过程中,需…...
植物大战僵尸杂交版v3.2.1最新版本(附下载链接)
B站游戏作者潜艇伟伟迷于12月21日更新了植物大战僵尸杂交版3.2.1版本!!!,有b站账户的记得要给作者三连关注一下呀! 不多废话下载链接放上: 夸克网盘链接::https://pan.quark.cn/s/e5…...
java每日精进 2.20 MQ相关复健
在 RabbitMQ 中,消息消费者对消息的签收(acknowledgment)可以通过三种方式进行管理:自动签收、手动签收 和 拒绝签收。它们主要控制消费者如何处理消息确认和消息的重新排队。下面详细讲解它们的区别,并通过代码示例展…...
【设计模式精讲】结构型模式之代理模式(静态代理、JDK动态代理、cglib动态代理)
文章目录 第五章 结构型模式5.1 代理模式5.1.1 代理模式介绍5.1.2 代理模式原理5.1.3 静态代理实现5.1.4 JDK动态代理5.1.4.1 JDK动态代理实现5.1.4.2 类是如何动态生成的5.1.4.3 代理类的调用过程 5.1.5 cglib动态代理5.1.5.1 cglib动态代理实现5.1.5.2 cglib代理流程 5.1.6 代…...
京东广告基于 Apache Doris 的冷热数据分层实践
一、背景介绍 京东广告围绕Apache Doris建设广告数据存储服务,为广告主提供实时广告效果报表和多维数据分析服务。历经多年发展,积累了海量的广告数据,目前系统总数据容量接近1PB,数据行数达到18万亿行,日查询请求量8…...
win11 安装pyenv来管理python
1、使用power shell或者cmd来安装: 2、使用pyenv 发现并没有pyenv。 3、在环境变量中增加: 路径:右键--此电脑--属性--高级系统设置--环境变量--Path--增加刚才--target所在的目录D:\tools\pyenv\pyenv-win\bin。 先退出当前的,…...
【AI】GitHub Copilot
GitHub Copilot 是一款由 GitHub 和 OpenAI 合作开发的 AI 编程助手,它可以在多种开发工具中使用。以下是 GitHub Copilot 支持的主要开发工具和平台: 1. Visual Studio Code (VS Code) 官方支持:GitHub Copilot 在 VS Code 中拥有最完整的集…...
【LeetCode 热题100】76. 最小覆盖子串的算法思路及python代码
76. 最小覆盖子串 给你一个字符串 s s s、一个字符串 t t t。返回 s s s 中涵盖 t t t 所有字符的最小子串。如果 s s s 中不存在涵盖 t t t 所有字符的子串,则返回空字符串 ‘ ‘ " \quad" ‘‘" 。 注意: 对于 t t t 中重复…...
基于RAG与向量数据库的Claude长上下文管理工具实战指南
1. 项目概述:一个为Claude模型“扩容”的上下文管理工具如果你和我一样,经常和Anthropic的Claude模型打交道,尤其是处理长文档、代码库分析或者多轮复杂对话,那你一定对它的上下文窗口限制又爱又恨。Claude 3系列模型支持高达200K…...
OpenJK性能优化揭秘:为什么你的绝地学院运行更流畅了
OpenJK性能优化揭秘:为什么你的绝地学院运行更流畅了 【免费下载链接】OpenJK Community effort to maintain and improve Jedi Academy (SP & MP) Jedi Outcast (SP only) released by Raven Software 项目地址: https://gitcode.com/gh_mirrors/op/OpenJK …...
样本不平衡下航空燃油泵故障诊断方法【附代码】
✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。 ✅ 如需沟通交流,扫描文章底部二维码。(1)星雀优化图神经网络的专家知识聚合模型:针对燃油…...
C++:继承与多态详解
文章目录1. 继承1.1 继承的概念1.2 继承方式1.3 基类和派生类的转换1.4 继承中的作用域1.5 类可以不被继承吗1.6 基类包含static函数1.7 多继承与菱形继承问题1.7 虚继承2. 多态2.1 多态的构成条件2.2 虚函数2.2.1 虚函数的重写/覆盖2.3 析构函数的重写2.4 override 和 final 关…...
AI驱动的高可控性3D资产生成:从扩散模型到实战应用
1. 项目概述:从“模拟”到“创造”的AI新范式最近在AI生成内容领域,一个名为“sim”的项目在开发者社区里引起了不小的讨论。这个由simstudioai团队开源的项目,其核心定位并非我们通常理解的“仿真模拟”,而是一个专注于高质量、高…...
Compose:1.3 组合、重组作用域和 remember()
文章目录recompose 重组rememberrecompose 性能风险与智能优化、Stablerecompose 智能优化Stable小结总结recompose 重组 我们先上一段代码,你觉得下面代码最终执行结果是什么: setContent {// 注意:这里将 MutableState 放在 setContent {…...
3步解锁Switch Joy-Con手柄在Windows的完整潜力:JoyCon-Driver实战指南
3步解锁Switch Joy-Con手柄在Windows的完整潜力:JoyCon-Driver实战指南 【免费下载链接】JoyCon-Driver A vJoy feeder for the Nintendo Switch JoyCons and Pro Controller 项目地址: https://gitcode.com/gh_mirrors/jo/JoyCon-Driver 想要让闲置的Switch…...
计算机视觉工具:Python+OpenCV的常用函数汇总
计算机视觉工具:PythonOpenCV的常用函数汇总📚 本章学习目标:深入理解PythonOpenCV的常用函数汇总的核心概念与实践方法,掌握关键技术要点,了解实际应用场景与最佳实践。本文属于《计算机视觉教程》计算机视觉入门篇&a…...
强化学习中针对重点的策略优化方法:AI智能体重点强化教程(2026工业级实践指南)
✅ 核心结论先行:所谓“针对重点的强化学习”(Focus-Aware Reinforcement Learning, FARL),并非对状态空间做简单掩码或权重放大,而是构建动态注意力-价值耦合机制,使智能体在训练与执行阶段能自主识别、聚…...
Python调用国产大模型API实战:从DeepSeek到智谱GLM
Python调用国产大模型API实战:从DeepSeek到智谱GLM导语:2026年4月,国产大模型迎来爆发期。DeepSeek V4、美团LongCat-2.0、智谱GLM-5.1同日发布。本文手把手教你用Python调用这些国产大模型API,成本只有OpenAI的1/5。一、为什么选…...
