1
public class Score {

    private String score;


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

}

在一个项目中工作,我在其中找到了这段代码

这段代码的功能很简单,但是如果设置器是公共的,我不明白为什么要将字符串分数设为私有。对我来说,这看起来像是将分数设为私有的感觉被公共二传手打破了。

提前感谢您帮助我从新手发展到至少有点程序员。

4

3 回答 3

0

使用 getter 和 setter,因为如果您在项目的中途决定更改变量的工作方式,或者如果您想修改原始值,则必须检查您的代码并将所有调用更改为公共变量。

但是,使用 getter 和 setter,您可以更改在方法内部处理变量的方式。

于 2013-03-14T15:08:51.357 回答
0

乍一看,它确实看起来像是破损的封装。然而,上述有两个优点。

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

以上意味着您可以按照您想要的方式并以不同于接口的方式实现该类(想象一下 - 您可以将这些方法抽象为一个接口并提供多个实现,所有这些实现都以不同的方式运行)。因为它们遵循相同的接口,您可以用一种实现替换另一种实现,而无需更改周围的代码。

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

于 2013-03-14T15:07:42.210 回答
0
  1. private关键字意味着这样声明的属性或方法仅在您的类中可见。

  2. public关键字意味着如此声明的属性或方法对任何人都是可见的。

这种做法被称为信息封装。公共 setter 和 getter 允许程序员控制这些函数的用户可以对您的私有属性执行什么操作。

于 2013-03-14T15:12:12.163 回答