访问修饰符用于控制类成员的可访问范围,主要分为 public、private 和 protected。public 允许任何地方访问,适用于对外暴露的方法或属性;private 仅允许在定义它的类内部访问,常用于保护数据并配合 getter/setter 使用;protected 允许同一包内访问及不同包中的子类访问,适合希望子类继承但不对外公开的成员。合理使用这三种修饰符有助于提高代码封装性和安全性。

类的访问修饰符主要用来控制类、方法、属性等成员在不同范围内的可访问性。常见的访问修饰符有 public、private 和 protected,它们分别对应不同的访问权限。

public:公开访问
public是最宽松的访问级别,表示该成员可以在任何地方被访问,不受限制。

- 适合用在对外暴露的方法或属性上,比如接口方法、工具类中的公共函数。
- 例如:
public class User {
public String name;
public void sayHello() {
System.out.println("Hello, " + name);
}
}在这个例子中,
name和
sayHello()都可以被外部直接调用。
注意:虽然方便,但不要随便把所有内容都设为 public,这样会破坏封装性。
private:私有访问
private表示只能在定义它的类内部访问,外部无法直接访问。
- 常用于保护数据安全,防止外部随意修改对象的状态。
- 通常配合 getter/setter 使用。
例如:
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}这样做的好处是可以通过 setter 控制赋值逻辑,比如加上校验:
public void setName(String name) {
if (name == null || name.isEmpty()) {
throw new IllegalArgumentException("Name can't be empty");
}
this.name = name;
}protected:受保护访问
protected的访问权限介于 public 和 private 之间,允许以下几种情况访问:
- 同一个包(package)中的其他类
- 不同包中的子类(即使子类不在同一个包里)
常见使用场景包括:
- 定义一些只希望子类继承和使用的方法或字段
- 构造器设为 protected,用于实现工厂模式等设计模式
举个例子:
public class Animal {
protected void makeSound() {
System.out.println("Some sound");
}
}
public class Dog extends Animal {
public void bark() {
makeSound(); // 可以访问父类的 protected 方法
}
}但如果在另一个不相关的类中尝试访问
makeSound(),就会失败。
小结一下常见用法建议:
- 数据字段尽量设为
private
,通过 getter/setter 暴露访问 - 对外提供的功能方法可以设为
public
- 如果想让子类能访问但不想外部直接访问,就用
protected
基本上就这些了,理解清楚每个修饰符的作用范围,在实际开发中合理使用,代码结构会更清晰也更安全。










