Author : Cyan_RA9
Source : 【卡码笔记】网站
Question : Java中的访问修饰符有哪些?各自的访问范围是什么?
【简要回答】
四大访问修饰符介绍
- 访问权限修饰符指的是用来修饰成员变量,成员方法和类,来确定它们的访问权限的修饰符。Java四大访问权限修饰符分别是private、默认、protected,public。
- public(公开)
- protected(受保护,子类可直接跨包访问)
- default(默认,即包级私有)
- private(私有)
四大访问修饰符权限
-
四大修饰符按照根据访问权限从小到大的原则依次是 : private < 默认 < protected < public。如下表所示:
-
四大修饰符总结:
- private修饰符 : 强调自己使用,只能在本类下使用。
- 默认 : 强调本包使用,只能在本类,同包下的类中使用。
- protected : 强调子类使用,只能在本类,同包下的类,以及其子类中使用。
- public : 强调公开使用,没有只能,谁都可以用。
【详细回答】
四大访问修饰符介绍
- public
- 定义:强调
公开,没有访问限制,所有类都可以访问。 - 适用场景:开放给全局使用的类、方法或变量(如工具类、主方法)。
- 定义:强调
- protected
- 定义:
允许子类跨包访问protected修饰的成员。 - 适用场景:需要被子类继承或覆盖的成员(如父类方法)。
- 定义:
- default(默认,无显式修饰符)
- 定义:权限最大只能是
本包下访问。 - 适用场景:包内共享的类或工具方法(无需跨包使用)。
- 定义:权限最大只能是
- private
- 定义:强调
私有,仅允许当前类内部访问。 - 适用场景:封装 类内部的实现细节(如成员变量、工具方法)。
- 定义:强调
四大访问修饰符权限
-
四大修饰符按照根据访问权限从小到大的原则依次是 : private < 默认 < protected < public。如下表所示:
访问修饰符注意事项
- 类的访问修饰符:
- 类只能使用 public 或 default(无修饰符)。
- public 类的类名需与文件名一致,且每个文件只能有一个 public 类。
- 成员变量与方法:
- 推荐对成员变量使用 private,通过公共方法(public)控制访问(封装性)。
- protected 方法常用于设计可扩展的父类。
- 在方法重写中,子类方法的访问权限不能比父类更严格(如父类方法是 protected,子类不能改为 private)。
【知识拓展】
类和源文件的关系
- 一个 Java 源文件中可以定义多个类,源文件的基本组成部分是类。
- 源文件中定义的类,最多只能有一个类被 public 修饰,其他类的个数不限。
- 如果源文件中有被 public 修饰的类,那么源文件名必须与该类类名保持一致。
- 如果源文件中没有被 public 修饰的类,那么源文件名只要符合命名规范就可以。
- main函数不一定非得写在 public 修饰的类中,也可以将main函数写在非 public 修饰的类中,然后通过指定运行非 public 类,这样入口方法就是非 public 类的main方法。
内部类和访问权限修饰符的关系
- 成员内部类(非静态内部类):
- 访问修饰符:public、protected、default、private。
- 可以被访问:如果在外部类是public的前提下,内部类也是public,那么项目下的所有包所有类都可以访问该内部类;如果内部类是protected, 那么同包下的所有类 + 不同包下该外部类的子类 可以访问该内部类。
- 不能被访问:若外部类为 default,则外包下的所有类(不论是否子类)都无法访问其中的内部类。另外, private 修饰的成员内部类,只能被外部类本身访问。
- 静态内部类:
- 访问修饰符:public、protected、default、private。
- 可以被访问:同上。
- 不能被访问:同上。
- 局部内部类:
- 访问修饰符:不支持(局部内部类不能使用访问修饰符)。
- 可以被访问:仅在定义它的方法或代码块内访问。
- 不能被访问:方法或代码块外部无法访问。
- 匿名内部类:
- 访问修饰符:不支持(匿名内部类不能使用访问修饰符)。
- 可以被访问:仅在定义它的代码块内访问。
- 不能被访问:代码块外部无法访问。