为什么在使用object.variable名称来获取或设置时使用set和get方法?

时间:2015-04-07 20:32:04

标签: java object methods get 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;

}
}

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

对于getter,如果变量是基元,则还可以阻止使用类修改变量。

答案 2 :(得分:0)

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

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