Setter和Getter惯例

时间:2013-03-14 15:06:23

标签: private setter public conventions getter

public class Score {

    private String score;


    public String getScore() {
        return score;
    }
    public void setScore(String score) {
        this.score = score;
    }

}

处理一个项目,我找到了这段代码

这段代码的功能很简单,但是如果setter是公共的,我无法理解为什么要将String得分设为私有。对我来说,看起来私密的感觉被公众制定者打破了。

提前感谢您帮助我从新手变成至少一点程序员。

3 个答案:

答案 0 :(得分:0)

乍一看,它确实看起来像破碎的封装。但是上面有两个优点。

  1. 实现。实现必须是String变量。 setter实现可以将其写入数据库,getter将检索它。
  2. 验证。只需暴露字段意味着您可以将String设置为您想要的任何内容。通过引入setter方法,您可以检查(比如)长度,空值,内容等。
  3. 上述意味着你可以以一种与界面不同的方式实现你想要的类(想象一下 - 你可以将这些方法抽象为一个接口并提供多个实现,所有这些都以不同的方式运行)。因为它们遵循相同的接口,所以您可以将一个实现替换为另一个实现,而不会更改周围的代码。

    我会说(进一步说到这一点)我倾向于不喜欢上述模式。我的理由是,OO的优势在于您可以告诉对象代表您做事,,以便您可以自己提取字段并使用它们执行自己的逻辑。因此,我倾向于怀疑与字段和setter / getters一起构成字段的类。

答案 1 :(得分:0)

使用了getter和setter,因为如果您决定项目的一半来改变变量的工作方式,或者如果您想要修改原始值,则必须通过代码并更改所有内容调用该公共变量。

但是,使用getter和setter,您只需更改方法中处理变量的方式。

答案 2 :(得分:0)

  1. private关键字表示声明为的属性或方法 只在课堂上可见。

  2. public关键字表示声明为此的属性或方法对任何人都可见。

  3. 众所周知,这种做法是对信息的封装。公共setter和getter允许程序员控制这些函数的用户可以对你的私有属性做什么。