跳转至

Java 中的 public 和 private

简介

在 Java 编程语言中,publicprivate 是两个重要的访问修饰符。它们用于控制类、变量、方法的可访问性,这对于实现数据封装和信息隐藏起着关键作用,有助于构建更加安全、可维护和模块化的代码。本文将深入探讨 publicprivate 的概念、使用方法、常见实践以及最佳实践。

目录

  1. 基础概念
    • public 修饰符
    • private 修饰符
  2. 使用方法
    • 修饰类
    • 修饰变量
    • 修饰方法
  3. 常见实践
    • 数据封装
    • 控制访问层次
  4. 最佳实践
    • 最小化可访问性
    • 遵循设计原则
  5. 小结
  6. 参考资料

基础概念

public 修饰符

public 修饰符表示被修饰的元素(类、变量或方法)具有最大的可访问性。一个 public 类可以被任何其他类访问,无论这些类在同一个包中还是在不同的包中。public 变量和方法可以在任何地方被访问和调用,只要它们所属的类是可访问的。

private 修饰符

private 修饰符表示被修饰的元素具有最小的可访问性。一个 private 变量或方法只能在声明它们的类内部被访问和调用,其他类无法直接访问这些 private 元素。这有助于隐藏类的内部实现细节,保护数据的完整性。

使用方法

修饰类

  • public 类java public class PublicClass { // 类的成员 } 任何其他类都可以通过导入包(如果在不同包中)来创建 PublicClass 的实例。

  • private 类:类不能直接声明为 private。不过,可以在另一个类的内部声明 private 类,这种内部类只能在包含它的外部类中被访问。 java public class OuterClass { private class InnerClass { // 内部类成员 } }

修饰变量

  • public 变量java public class PublicVariableExample { public int publicVariable; } 可以在任何可访问 PublicVariableExample 类的地方访问和修改 publicVariablejava public class Main { public static void main(String[] args) { PublicVariableExample example = new PublicVariableExample(); example.publicVariable = 10; } }

  • private 变量: ```java public class PrivateVariableExample { private int privateVariable;

    // 通常会提供公共的 getter 和 setter 方法来访问和修改 private 变量
    public int getPrivateVariable() {
        return privateVariable;
    }
    
    public void setPrivateVariable(int value) {
        privateVariable = value;
    }
    

    } 其他类不能直接访问 `privateVariable`,只能通过 `getPrivateVariable` 和 `setPrivateVariable` 方法。java public class Main { public static void main(String[] args) { PrivateVariableExample example = new PrivateVariableExample(); example.setPrivateVariable(20); int value = example.getPrivateVariable(); } } ```

修饰方法

  • public 方法java public class PublicMethodExample { public void publicMethod() { System.out.println("This is a public method."); } } 可以在任何可访问 PublicMethodExample 类的地方调用 publicMethodjava public class Main { public static void main(String[] args) { PublicMethodExample example = new PublicMethodExample(); example.publicMethod(); } }

  • private 方法: ```java public class PrivateMethodExample { private void privateMethod() { System.out.println("This is a private method."); }

    public void callPrivateMethod() {
        privateMethod();
    }
    

    } `privateMethod` 只能在 `PrivateMethodExample` 类内部被调用,例如通过 `callPrivateMethod` 方法间接调用。java public class Main { public static void main(String[] args) { PrivateMethodExample example = new PrivateMethodExample(); example.callPrivateMethod(); } } ```

常见实践

数据封装

通过将类的属性声明为 private,并提供 public 的 getter 和 setter 方法,可以实现数据封装。这样外部类不能直接修改对象的内部状态,而是通过这些控制方法来确保数据的一致性和合法性。

public class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age >= 0) {
            this.age = age;
        } else {
            System.out.println("Age cannot be negative.");
        }
    }
}

控制访问层次

在设计类的结构时,可以使用 publicprivate 来控制不同类之间的访问层次。将一些内部实现细节的方法声明为 private,只暴露必要的 public 接口给外部使用,这样可以提高代码的安全性和可维护性。

最佳实践

最小化可访问性

尽量将类的成员声明为 private,只有在必要时才将其设置为 public。这样可以减少类的内部实现细节暴露给外部的风险,增强代码的封装性和安全性。

遵循设计原则

遵循面向对象设计原则,如单一职责原则和开闭原则。使用 publicprivate 来确保类的职责清晰,并且在需要扩展或修改时不会影响到其他不相关的部分。

小结

publicprivate 是 Java 中重要的访问修饰符,它们在控制类、变量和方法的可访问性方面发挥着关键作用。通过合理使用这两个修饰符,可以实现数据封装、信息隐藏,提高代码的安全性、可维护性和模块化程度。在实际编程中,应遵循最小化可访问性和设计原则等最佳实践,以构建高质量的 Java 应用程序。

参考资料