在Java中,public、private和protected是访问修饰符,它们决定了类、方法或变量的访问级别。这些访问修饰符有助于实现封装,这是面向对象编程的四大基本特性之一。
- public:这是最高级别的访问修饰符。被
public修饰的类、方法或变量可以被任何其他类访问。
public class PublicExample {
public int publicVar = 10;
public void publicMethod() {
System.out.println("This is a public method.");
}
}
在上面的代码中,PublicExample类、publicVar变量和publicMethod方法都可以被其他任何类访问。
- private:这是最低级别的访问修饰符。被
private修饰的类、方法或变量只能在其所在的类内部被访问。
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修饰的类、方法或变量可以在其所在的类内部以及同一个包内的其他类中被访问,也可以被其他包中的子类访问。
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或默认的(没有明确的访问修饰符)。默认的访问级别意味着类只能在其所在的包内被访问。