首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Setter和Getter约定

Setter和Getter约定
EN

Stack Overflow用户
提问于 2013-03-14 23:06:23
回答 3查看 58关注 0票数 1
代码语言:javascript
复制
public class Score {

    private String score;


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

}

在一个项目中,我发现了这段代码

这段代码的功能性很简单,但是我不明白如果setter是公共的,为什么要将String score设为私有。在我看来,将比分设为私有的感觉被一个公共设置者打破了。

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

EN

回答 3

Stack Overflow用户

发布于 2013-03-14 23:07:42

乍一看,它确实像是坏了的封装。然而,上述方法有两个优点。

  1. Implementation.实现不必是String变量。setter实现可以将其写入数据库,然后由getter检索它。
  2. 验证。公开该字段就意味着您可以将String设置为您想要的任何内容。通过引入setter方法,您可以检查(比方说)长度、空值、内容等。

上面的意思是你可以按照你想要的方式实现这个类,并且以一种与接口不同的方式实现(想象一下--你可以把这些方法抽象到一个接口中,然后提供多种实现,所有实现都以完全不同的方式运行)。因为它们遵循相同的接口,所以您可以用一种实现替换另一种实现,而无需更改周围的代码。

我想说(进一步),我倾向于不喜欢上面的模式。我的理由是,OO的优点是你可以告诉对象代表你做事情,而不是让你自己提取字段并使用它们执行自己的逻辑。正因为如此,我倾向于怀疑由字段和setter/getter组成的类。

票数 0
EN

Stack Overflow用户

发布于 2013-03-14 23:08:51

之所以使用Getters和setter,是因为如果您在项目进行到一半时决定更改变量的工作方式,或者如果您希望修改原始变量的值,则必须遍历代码并更改对该公共变量的所有调用。

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

票数 0
EN

Stack Overflow用户

发布于 2013-03-14 23:12:12

  1. private关键字意味着声明为so的属性或方法仅在类中可见。
  2. public关键字表示声明为so的属性或方法对任何人都可见。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15412899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档