Java提供了四种访问权限修饰符,用于控制类、变量、方法和构造器的访问范围:
1. public
访问范围:任何地方都可以访问
可以修饰:类、接口、变量、方法、构造器
特点:具有最大的访问权限,被public修饰的类名必须与文件名相同(一个.java文件中只能有一个public类)
2. protected
访问范围:同一包内的任何类,不同包中的子类
可以修饰:变量、方法、构造器(不能修饰外部类)
特点:主要用于继承关系中,允许子类访问父类的成员
3.什么都不写default(默认的/包私有的)
访问范围:同一包内的任何类
可以修饰:类、接口、变量、方法、构造器
特点:不使用任何修饰符时即为default权限,也称为"包访问权限"
4. private
访问范围:仅限定义它的类内部
可以修饰:变量、方法、构造器(不能修饰外部类)
特点:
具有最小的访问权限,常用于封装类的内部实现细节
访问权限比较表
| 修饰符 | 当前类 | 同一包内 | 不同包的子类 | 其他包 |
|---|---|---|---|---|
| public | ✔ | ✔ | ✔ | ✔ |
| protected | ✔ | ✔ | ✔ | ✖ |
| default | ✔ | ✔ | ✖ | ✖ |
| private | ✔ | ✖ | ✖ | ✖ |
public class Test {
public int publicVar = 1; // 任何地方可访问
protected int protectedVar = 2; // 同包或子类可访问
int defaultVar = 3; // 同包可访问
private int privateVar = 4; // 仅本类可访问
public void publicMethod() {
System.out.println("公共方法");
}
protected void protectedMethod() {
System.out.println("受保护方法");
}
void defaultMethod() {
System.out.println("默认方法");
}
private void privateMethod() {
System.out.println("私有方法");
}
}
2684

被折叠的 条评论
为什么被折叠?



