【问题标题】:Why use set and get method when you can just use object.variable name to get or set? [duplicate]当您可以使用 object.variable 名称来获取或设置时,为什么还要使用 set 和 get 方法? [复制]
【发布时间】:2015-04-07 20:32:03
【问题描述】:

我只是想知道使用 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;

}
}

【问题讨论】:

  • 我想这已经被回答了很多次了。 following answer 是之前回答过的这个问题的例子之一。

标签: java object methods get set


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 此外,您以后可能还想为变量添加限制,可以在设置数字时检查。
      • 难道不是将变量设为私有以便只能在同一个类中访问吗?如果 getter 和 setter 方法可以访问这些私有变量,那么为什么要将它们设为私有呢?谢谢。
      • @skillet getter 和 setter 可以提供对所述变量的有限访问,和/或可以根据您希望用户看到的内容提供输出。
      猜你喜欢
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多