Java中的权限修饰符(Access Modifiers)是用来限制类、变量、方法和构造函数的访问权限的。Java提供了四种权限修饰符,分别是:
- private:私有的,只能在本类中访问,不能在其他类中访问。
- default(没有显式指定权限修饰符):默认的,只能在同一个包中的类访问,不能在其他包中的类访问。
- protected:只有
同一个包中的类
或者是这个类的子类可以访问
例如,如果你有一个protected的方法或变量在一个类中,那么任何其他类在这个包中可以直接访问这个方法或变量。同时,任何继承这个类的子类,无论它们是否在同一包中,都可以访问这个方法或变量。
public class Animal {
protected String name;
protected void eat() {
// ...
}
}
public class Dog extends Animal {
// 可以在这里访问 Animal 类的 protected 成员
public void bark() {
System.out.println(name); // 可以访问 name
eat(); // 可以访问 eat
}
}
在上面的例子中,Dog类可以访问Animal类的protected方法eat()和protected变量name。
- public:公共的,可以在任何地方访问。
下面是一个简单的例子,展示了不同权限修饰符的使用:
public class Animal {
private String name; // 私有变量,只能在本类中访问
String color; // 默认变量,只能在同一个包中的类访问
protected int age; // 受保护变量,可以在同一个包中的类以及其他包中的子类访问
public String species; // 公共变量,可以在任何地方访问
private void eat() {
// 私有方法,只能在本类中访问
// ...
}
void sleep() {
// 默认方法,只能在同一个包中的类访问
// ...
}
protected void breathe() {
// 受保护方法,可以在同一个包中的类以及其他包中的子类访问
// ...
}
public void move() {
// 公共方法,可以在任何地方访问
// ...
}
}
权限修饰符的作用范围是从定义它的地方开始,一直到该类或接口结束。