nik*_*hil 15 java getter-setter
始终建议使用getter/setter访问私有变量.为什么将它们声明为公共并访问它们并不是一个更好的主意.无论如何我们使用getter和setter访问它?
Sni*_*las 12
@mre答案非常好,你的问题很重要.总结一下:您将对象的字段设置为私有,以控制其他对象使用它的方式.您的对象使用setter:
它将使用getter
欢迎来到OO编程的精彩世界和结构化编程的魔力.
斯特凡
And*_*rus 11
上面的所有答案都非常好,但是我还要补充一点.
您不希望所有私有变量都拥有公共getter和setter.
你的getter和setter指的是外部可见的状态.在某些情况下,在公共方法中发布的单个对象对应于实现的多个内部私有变量.在复杂对象中,许多私有变量不会映射到外部可见的内容.有些人无论如何都会自动为他们编写setter和getter,但这是一个坏主意,因为它暴露了你的实现细节.
我总是被告知,其中一个主要原因是试图规划未来的变化.它可能只是开始
public int getInt() { return _someInt;}
Run Code Online (Sandbox Code Playgroud)
但可能会最终成为
public int getInt() {
// do some processing
return _someInt;
Run Code Online (Sandbox Code Playgroud)
}
这将使您不必对访问公共属性的地方进行大量更改,而不是使用getter/setter.
通常,setter允许您对分配给私有成员的值的类型进行限制.所以也许不允许负值等.
一个getter,因为你因为上述原因将其设为私有而强制访问该成员,所以允许消费者访问该成员的值.