获取器和设置器有什么作用?

85

可能是重复问题:
为什么要使用getter和setter?

我读过关于Java的书,其中提到为变量(如xy)创建getter和setter方法是很好的做法。例如:

public int getX(){
    return x;
}

public void setX(int x){
    this.x = x;
}

但是这和那之间的区别是什么呢?

...(shape.x)...   // Basically getX()

shape.x = 90;    // Basically setX()

如果说setter和getter方法更好,那么会出现哪些实际问题?


2
请查看此链接:https://dev59.com/oHI_5IYBdhLWcg3wAeHl#1568230 - Zaz Gmy
4
事实上,访问器是一种巨大的负担,你应该在每种情况下权衡成本与收益。有些情况下,公共字段(特别是如果你可以将它们设为 final)是正确的选择。 - Marko Topolnik
在最佳实践的神圣名义下完全是胡说八道。 - MonoThreaded
12个回答

0

Getter和Setter通过仅通过其公共方法访问它们来封装类的字段,并将值本身保持私有。这被认为是一个良好的面向对象编程原则。

诚然,如果Getter和Setter仅仅用于设置或返回值,它们看起来经常像是冗余代码。但是,Setter还允许您进行输入验证或清理。在一个地方拥有它可以提高对象的数据完整性。


0

因为我们正在使用面向对象的编程语言。 在这里,我们使用数据隐藏和封装。 变量不应该直接从外部世界访问(为了实现数据隐藏),因此我们将其创建为私有的。

shape.x

不正确。 Getter和setter方法用于获取和设置x的值,这是实现封装的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接