public class Score {
private String score;
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
}在一个项目中,我发现了这段代码
这段代码的功能性很简单,但是我不明白如果setter是公共的,为什么要将String score设为私有。在我看来,将比分设为私有的感觉被一个公共设置者打破了。
提前感谢您帮助我从新手成长为至少一点程序员。
发布于 2013-03-14 23:07:42
乍一看,它确实像是坏了的封装。然而,上述方法有两个优点。
String变量。setter实现可以将其写入数据库,然后由getter检索它。String设置为您想要的任何内容。通过引入setter方法,您可以检查(比方说)长度、空值、内容等。上面的意思是你可以按照你想要的方式实现这个类,并且以一种与接口不同的方式实现(想象一下--你可以把这些方法抽象到一个接口中,然后提供多种实现,所有实现都以完全不同的方式运行)。因为它们遵循相同的接口,所以您可以用一种实现替换另一种实现,而无需更改周围的代码。
我想说(进一步),我倾向于不喜欢上面的模式。我的理由是,OO的优点是你可以告诉对象代表你做事情,而不是让你自己提取字段并使用它们执行自己的逻辑。正因为如此,我倾向于怀疑由字段和setter/getter组成的类。
发布于 2013-03-14 23:08:51
之所以使用Getters和setter,是因为如果您在项目进行到一半时决定更改变量的工作方式,或者如果您希望修改原始变量的值,则必须遍历代码并更改对该公共变量的所有调用。
但是,使用getter和setter,您只能更改在方法中处理变量的方式。
发布于 2013-03-14 23:12:12
private关键字意味着声明为so的属性或方法仅在类中可见。public关键字表示声明为so的属性或方法对任何人都可见。这种做法就是众所周知的信息封装。公共setter和getter允许程序员控制这些函数的用户可以对您的私有属性做什么。
https://stackoverflow.com/questions/15412899
复制相似问题