在类中为自己的字段使用getter/setter有什么好处吗?

Fix*_*int 6 java

通常,在我自己的项目中,我使用getter和setter进行任何字段访问,然后我按照我的工作做同样的事情.前段时间,我们项目的技术负责人问我为什么这样做,为什么这比仅仅使用字段本身更好(如果需要通过子类访问,可以选择声明它们受保护).我无法得出一个明确的答案.

那么,是否有任何理由在类的自己的字段中使用getter和setter,或者直接使用字段是否更好?

aib*_*aib 6

最明显的答案是副作用:

int getCost()
{
    if (cost == null) {
        calculateCost();
    }

    return cost;
}
Run Code Online (Sandbox Code Playgroud)

如果您需要费用,请使用getCost().如果您想查看是否已计算成本,请使用cost.


Mar*_*ayo 1

您希望将它们声明为公共 getter 和 setter 以及私有字段。这意味着想要修改变量的外部类(不是子类)都通过 setter 进行修改,并通过 getter 获取它们。这样做的好处是,如果您想控制它们获取或设置的方式或条件,或者想要添加信息甚至打印调试,这意味着您只需将其放在 getter 和 setter 中。

实际上 stackoverflow 上有一个很好的解释:

在Java中,默认、公共、受保护和私有之间的区别

当然,仅在实际需要时才创建方法,同样,仅在外部类需要时才将其公开。

希望对防守有所帮助!