Java四种访问修饰符可见性由小到大为private<默认<protected<public:private仅本类可访问;默认同包可访问;protected允许本类、同包及不同包子类访问(但不可通过父类实例访问);public任意位置均可访问。

Java 中的四种访问修饰符(private、默认(包级私有)、protected、public)决定了类、方法、字段等成员在不同作用域中的可见性。下面通过一个清晰的代码示例结构,展示它们各自的权限范围。
1. private:仅限本类内部访问
被 private 修饰的成员,只能在声明它的那个类中使用,连子类和同包其他类都不能访问。
class Person {
private String idCard = "123456"; // 仅 Person 类内可访问
private void showId() {
System.out.println(idCard); // ✅ 合法:本类中调用
}
}
class Student extends Person {
void test() {
// System.out.println(idCard); // ❌ 编译错误:不可见
// showId(); // ❌ 编译错误:不可见
}
}
2. 默认(不写修饰符):同一包内可访问
没有写任何修饰符时,默认为包级私有(package-private),同包下的所有类都能访问,但跨包(即使子类)也不行。
// 在 com.example 包下
class Person {
String name = "Alice"; // 默认权限
void greet() { System.out.println("Hi"); }
}
class Teacher {
void introduce() {
Person p = new Person();
System.out.println(p.name); // ✅ 同包,可访问
p.greet(); // ✅ 同包,可调用
}
}
// 在 com.other 包下(不同包)
class ExternalUser {
void tryAccess() {
Person p = new Person();
// System.out.println(p.name); // ❌ 编译错误:不同包不可见
// p.greet(); // ❌ 编译错误
}
}
3. protected:本类 + 同包 + 不同包子类可访问
protected 比默认更宽,允许不同包的子类继承并访问(但不能通过父类实例直接访问)。
立即学习“Java免费学习笔记(深入)”;
// com.example.Person
package com.example;
class Person {
protected String email = "a@x.com";
protected void sendEmail() { System.out.println("Sent"); }
}
// com.other.Student(不同包,继承 Person)
package com.other;
import com.example.Person;
class Student extends Person {
void useProtected() {
System.out.println(email); // ✅ 子类继承后可直接访问
sendEmail(); // ✅ 子类继承后可直接调用
}
void accessViaInstance() {
Person p = new Person();
// System.out.println(p.email); // ❌ 错误:protected 不允许通过外部实例访问
// p.sendEmail(); // ❌ 同上
}
}
4. public:任何地方都可访问
public 是最开放的权限,只要能拿到对象引用或类名,无论是否同包、是否继承,都可访问。
class Person {
public String city = "Beijing";
public void move() { System.out.println("Moving..."); }
}
// 任意包下的任意类
class Anywhere {
void demo() {
Person p = new Person();
System.out.println(p.city); // ✅ 可访问
p.move(); // ✅ 可调用
}
}
总结来看,四种修饰符的可见性从小到大是:private < 默认 < protected < public。实际开发中应遵循“最小权限原则”——只暴露必要的访问级别,避免过度公开导致封装破坏或安全风险。


















