为什么我们将变量设为私有,以便我们可以使用 getter 和 setter 访问它们?

Why do we make variables private where we can access them using getter and setter?

我无法理解将变量设为私有的概念,因为我们可以使用 getter 和 setter 方法在 class 之外访问它们。

那么这些私有变量如何保持私有。

因为其他 class 没有人删除 tchem,甚至经常改变它们的价值,但他们仍然可以知道它们的价值。

在Java中getterssetters完全是普通函数。唯一让他们 getters 或 setters 的是 convention。 foo 的 getter 称为 getFoo,setter 称为 setFoo。对于布尔值,getter 称为 isFoo。它们还必须具有特定的声明,如 getter 和 setter 用于 name 的示例所示:

class Dummy
{
private String name;

public void Dummy() {}

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

public String getName() {
    return this.name;
}

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

使用 getter 和 setter 而不是让您的成员 public 的原因是它可以在不更改接口的情况下更改实现。此外,许多使用反射来检查对象的工具和工具包只接受具有 getters 和 setters 的对象。 Java例如,Bean 必须具有 getter 和 setter 以及其他一些要求。

此外,需要将实例变量声明为私有,以便程序的不同部分无法直接访问它们或错误地修改它们,这可能导致 disaster in real world programs

考虑阅读 Why Use Getters and Setters?