为什么我们将变量设为私有,以便我们可以使用 getter 和 setter 访问它们?
Why do we make variables private where we can access them using getter and setter?
我无法理解将变量设为私有的概念,因为我们可以使用 getter 和 setter 方法在 class 之外访问它们。
那么这些私有变量如何保持私有。
因为其他 class 没有人删除 tchem,甚至经常改变它们的价值,但他们仍然可以知道它们的价值。
在Java中getters
和setters
完全是普通函数。唯一让他们 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?
我无法理解将变量设为私有的概念,因为我们可以使用 getter 和 setter 方法在 class 之外访问它们。
那么这些私有变量如何保持私有。
因为其他 class 没有人删除 tchem,甚至经常改变它们的价值,但他们仍然可以知道它们的价值。
在Java中getters
和setters
完全是普通函数。唯一让他们 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?