在Java中,public
、private
和protected
是访问修饰符,它们决定了类、方法或变量的访问级别。这些访问修饰符有助于实现封装,这是面向对象编程的四大基本特性之一。
- public:这是最高级别的访问修饰符。被
public
修饰的类、方法或变量可以被任何其他类访问。
java">public class PublicExample {public int publicVar = 10;public void publicMethod() {System.out.println("This is a public method.");}
}
在上面的代码中,PublicExample
类、publicVar
变量和publicMethod
方法都可以被其他任何类访问。
- private:这是最低级别的访问修饰符。被
private
修饰的类、方法或变量只能在其所在的类内部被访问。
java">public class PrivateExample {private int privateVar = 20;private void privateMethod() {System.out.println("This is a private method.");}public void accessPrivate() {System.out.println(privateVar); // 可以访问privateMethod(); // 可以访问}
}
在上面的代码中,privateVar
变量和privateMethod
方法只能在PrivateExample
类内部被访问。尽管accessPrivate
方法可以访问它们,但其他类不能直接访问。
- protected:这是介于
public
和private
之间的访问修饰符。被protected
修饰的类、方法或变量可以在其所在的类内部以及同一个包内的其他类中被访问,也可以被其他包中的子类访问。
java">package package1;public class ProtectedExample {protected int protectedVar = 30;protected void protectedMethod() {System.out.println("This is a protected method.");}
}package package2;import package1.ProtectedExample;public class AnotherClass extends ProtectedExample {public void accessProtected() {System.out.println(protectedVar); // 可以访问protectedMethod(); // 可以访问}
}
在上面的代码中,ProtectedExample
类在package1
包中,而AnotherClass
类在package2
包中,并且AnotherClass
是ProtectedExample
的子类。因此,AnotherClass
可以访问ProtectedExample
中的protectedVar
变量和protectedMethod
方法。
注意:类本身不能是private
或protected
的,它们只能是public
或默认的(没有明确的访问修饰符)。默认的访问级别意味着类只能在其所在的包内被访问。