当前位置: 首页 > news >正文

访问修饰符的基础面试题

一、Java 访问修饰符核心作用

访问修饰符(Access Modifier)是 Java 中用于控制类、方法、变量的访问权限的关键字,核心目的是实现「封装性」—— 隐藏内部实现细节,只暴露必要的接口给外部使用,减少代码耦合。

Java 提供 4 种访问修饰符,权限范围从宽到严如下
image

为什么局部变量不能使用访问修饰符

访问修饰符的作用是控制不同类之间的访问权限,而局部变量的作用域仅限于「当前方法 / 代码块」,其他类(甚至本类的其他方法)都无法访问它,因此访问修饰符对局部变量无意义,Java 语法也禁止为局部变量添加访问修饰符。

补充: 局部变量仅能添加 final 修饰(表示变量值不可修改),不能加 public/private/protected/static 等

在子类中,能否重写父类的 private 方法?为什么?

不能。原因:

1.父类的 private 方法仅在父类内部可见,子类无法感知该方法的存在,自然无法「重写」。
2.若子类定义了与父类 private 方法同名、同参数的方法,这属于子类的新方法,而非重写(不会触发多态)。

class Parent {private void say() {System.out.println("父类 say");}public void call() {say(); // 调用父类自己的 say 方法}
}class Child extends Parent {public void say() { // 这是子类的新方法,不是重写System.out.println("子类 say");}
}public class Test {public static void main(String[] args) {Parent p = new Child();p.call(); // 输出「父类 say」,说明未触发多态,不是重写}
}

子类重写父类方法时,访问修饰符的权限能否缩小

class Parent {protected void doSomething() {}
}class Child extends Parent {// 情况1:子类修饰符权限扩大(合法)@Overridepublic void doSomething() {}// 情况2:子类修饰符权限缩小(编译报错)/*@Overrideprivate void doSomething() {}*/
}

答案 & 解析

子类重写父类方法时,不能缩小访问权限,只能扩大或保持不变。

原因: Java 多态的「里氏替换原则」—— 父类对象可以被子类对象替换,若子类方法权限缩小,会导致父类引用调用子类方法时权限不足,破坏多态逻辑。
合法示例: 父类 protected → 子类 public(权限扩大);
非法示例: 父类 protected → 子类 private(权限缩小,编译报错)

总结:

1.访问修饰符的核心是控制权限、实现封装,private 用于隐藏内部实现,public 用于对外暴露接口,protected 用于子类继承,default 用于同包协作;
2.子类重写父类方法时,访问权限不能缩小,只能扩大或保持不变;
3.protected 的易混点:子类仅能访问「自己继承的」protected 成员,而非任意父类对象的 protected 成员;
4.实际开发中遵循「最小权限原则」:能使用 private 就不用 default,能使用 default 就不用 protected,仅对外暴露的接口用 public。

http://www.jsqmd.com/news/461739/

相关文章:

  • 一款用在导弹上的自粘胶带:TJD-103(J)
  • canal和ES同步失败维护步骤
  • 基于Simulink的轮胎动力学模型(魔术公式)探索
  • # GEO霸屏,电商企业找上海企服猫就对啦!家人们,做电商的都知道,在这个竞争激烈的市场里,想要脱颖而出,那可太难了。今天咱就聊聊电商企业的引流利器——GEO霸屏,还会给大家分享一些超实用的实操建议
  • 2026年靠谱的大连考公品牌推荐:大连考公集训营/大连考公国考面试专项班行业内知名推荐公司 - 行业平台推荐
  • 散热器产业的下一步:从“金属件”到“系统级热管理模块”的结构升级
  • 一类并查集维护的区间染色问题
  • 替代WSTCC1130T双节锂电池充电IC集成均衡充功能
  • Win11操作系统激活
  • PPT Timer:一个置顶于PPT全屏放映之上的LCD倒计时器
  • AI赛博飞升,我们离“仙界”还远么
  • OpenClaw 完整安装指南
  • windows通过wsl的方式安装ubuntu系统(含离线方式)
  • (windows)本地安装openclaw,完成配置并接入本地大模型(ollama)全流程指南
  • 浏览器自动将http访问链接自动转化为https链接,解决办法
  • c++ static关键字的详细用法和作用
  • Spring的IOC详解
  • 2026年苏州青少年篮球培训怎么选?这几家TOP机构值得关注!
  • Claude Code 隐藏功能大全:90%的人不知道这些
  • 150 万人被偷家之后,我翻了翻自己的 API Key 管理,冷汗直流
  • 帮朋友拆了一个机械臂问题,从误解到最优解
  • FFMPEG网络推流
  • 技术落地解析:深圳市兴通物联俄罗斯诚信标签条码比对系统,提升对俄出口合规效率
  • 2026年叔丁醇钾选购,江苏天泽新材料费用合理值得考虑 - myqiye
  • 跑步耳机挂脖好还是无线好?2026最适合跑步用的耳机真实体验分享
  • Python保护类内部私有变量,不允许外部类访问的一种简单实现
  • 口碑好的多肽修饰厂家2026年排行榜,哪家服务更贴心 - 工业推荐榜
  • OpenClaw本地私有化部署教程
  • 进口阀门市场发展趋势与工业应用解析
  • 矩阵论考题——答案