Java访问控制关键字共四个:public、protected、default(包级私有)、private;分别控制成员在任意位置、同包及子类、同包、仅本类内的访问权限。

Java访问控制关键字是用来限制类、方法、变量等成员的可见范围和访问权限的修饰符,共四个:public、protected、default(包级私有,不写关键字)、private。它们决定了谁能在什么范围内访问这些成员。
public:完全公开,任何地方都能访问
被 public 修饰的类、方法或字段,可以在任意类中被访问,只要该类可被导入(public 类需与文件同名)。
- 类只能用 public 或 default 修饰;public 类必须和文件名一致
- 接口中的方法默认是 public abstract,字段默认是 public static final
- 示例:public class Utils { public static void log(String s) { ... } } → 其他包也能调用 Utils.log("hello")
protected:子类 + 同包可访问
protected 主要用于继承场景。它允许:同一包内的所有类访问;不同包中的子类通过继承访问(但不能通过父类引用直接访问)。
- 不能修饰外部类(只能修饰成员变量、方法、内部类)
- 子类重写 protected 方法时,访问级别不能更严格(比如不能改成 private)
- 示例:protected int id; → 子类可直接用 this.id,但 new Parent().id 在不同包中会编译失败
default(包级私有):仅限同一个包内访问
不加任何访问修饰符就是 default。它比 protected 更保守,不支持跨包继承访问,只认“包”这层关系。
本文档主要讲述的是Python开发网站指南;HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器 Python和其他程序语言一样,有自身的一套流程控制语句,而且这些语句的语法和其它程序语言类似,都有for, if ,while 类的关键字来表达程序流程。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
立即学习“Java免费学习笔记(深入)”;
- 适合封装内部实现细节,比如工具类的辅助方法、包内共享的常量
- 接口中 default 方法是另一回事(Java 8 引入的默认实现),和访问控制的 default 无关,别混淆
- 示例:void helper() { ... } → 只有同包下的类能调用
private:最严格,仅本类内部可用
private 是最强封装手段,用来隐藏实现细节、保护数据安全,比如字段通常设为 private,配以 public 的 getter/setter 控制读写逻辑。
- 不能修饰类(外部类),但可以修饰内部类、方法、字段、构造器
- 子类无法继承 private 成员,也不能重写或直接访问
- 示例:private String password; → 外部连读都不行,必须靠 getPassword()(且可在其中加校验逻辑)
基本上就这些。选哪个关键字,核心看设计意图:要不要被继承?要不要被其他包用?要不要被外部修改?想清楚这三点,选择就不难了。










