当您只能使用 object.variable 名称来获取或设置时,为什么要使用设置和获取方法?

Why use set and get method when you can just use object.variable name to get or set?

我只是想知道使用set和get方法和只使用object.variableName来设置和获取有什么区别吗?谢谢。

package hello;

public class Helloworld {

int num;

public static void main(String[] args) {
    Helloworld hello1 = new Helloworld();
    Helloworld hello2 = new Helloworld();

    hello1.num = 5;
    System.out.println(hello1.num);

    hello2.setNum(5);
    System.out.println(hello2.getNum());

}

void setNum(int i) {
    this.num = i;

}

int getNum() {
    return this.num;

}
}

因为有时变量是私有的,无法通过 obj.varname 访问。简而言之:封装。

为了保护您的程序,您希望变量尽可能地私有,有时如果您想检查它是否是有效值或类似的东西,set 方法会更好。

主要原因是封装。您希望您的变量是私有的,并且不能由用户或客户端直接修改,因为它可能会影响系统其他部分的行为。

这基本上是与封装概念有关的最佳实践。

如果您使用 get 和 set 方法,那么如果您决定向 get 或 set 方法添加一些额外的逻辑(例如验证),您以后将拥有更大的灵活性。

在 getter 的情况下,如果它是原始变量,您还可以防止使用 class 修改变量。