理解Java中的访问修饰符:public、private和protected

作者:渣渣辉2024.04.09 19:55浏览量:15

简介:在Java编程中,访问修饰符用于控制类、变量、方法和构造函数的访问权限。本文详细解释了public、private和protected修饰符的区别,并介绍了它们如何影响继承中的方法访问。

在Java编程语言中,访问修饰符是用来设定类、变量、方法和构造函数的访问权限的关键字。它们主要有三个:publicprivateprotected。这些修饰符决定了哪些其他类可以访问特定的成员。

public

当一个类的成员被声明为public时,它可以从任何其他类中被访问。无论是同一包下的类,还是其他包中的类,只要它们知道这个成员的完整名称,就可以访问它。

  1. public class MyClass {
  2. public int myPublicVariable = 100;
  3. public void myPublicMethod() {
  4. // do something
  5. }
  6. }

在这个例子中,myPublicVariablemyPublicMethod都可以从其他任何类中访问。

private

当一个类的成员被声明为private时,它只能被该类自己访问。即使在同一包下的其他类也不能访问它。

  1. public class MyClass {
  2. private int myPrivateVariable = 100;
  3. private void myPrivateMethod() {
  4. // do something
  5. }
  6. }

在这个例子中,myPrivateVariablemyPrivateMethod只能由MyClass自身访问。

protected

protected修饰符的访问级别介于publicprivate之间。当一个成员被声明为protected时,它可以在同一包下的任何类中被访问,以及在其他包中的子类中被访问。

  1. public class MyClass {
  2. protected int myProtectedVariable = 100;
  3. protected void myProtectedMethod() {
  4. // do something
  5. }
  6. }

在这个例子中,myProtectedVariablemyProtectedMethod可以被同一包下的其他类以及在其他包中继承自MyClass的子类访问。

继承与访问权限

在继承中,子类可以访问其父类中的publicprotected成员。private成员在子类中是不可见的。如果子类需要访问父类的protected成员,它可以在自己的方法中使用这些成员。

  1. public class ParentClass {
  2. public int publicVar = 100;
  3. protected int protectedVar = 200;
  4. private int privateVar = 300;
  5. }
  6. public class ChildClass extends ParentClass {
  7. public void accessParentVars() {
  8. publicVar = 101; // 可以访问和修改
  9. protectedVar = 201; // 可以访问和修改
  10. // privateVar = 301; // 错误!无法访问
  11. }
  12. }

在这个例子中,ChildClass可以访问和修改ParentClass中的publicVarprotectedVar,但无法访问privateVar

总结

理解publicprivateprotected这三个访问修饰符的区别,对于编写健壮、可维护的Java代码至关重要。通过适当地使用这些修饰符,你可以控制类成员的访问权限,确保代码的安全性和封装性。