当我们有访问器和mutator时,为什么要声明私有字段?

Ada*_*331 3 java oop access-modifiers

如果我用Java创建一个类,我总是被告知惯例是使一个类的所有字段都是私有的.如果我需要访问或更改它们,我可以创建一个accessor和mutator方法.我确实理解私有变量的重要性,因为它们有助于降低复杂性并允许封装.

我不明白的是,如果我创建一个公共访问者和mutator方法,那么那个变量是不是公共?为什么在任何人都可以访问私有变量的情况下仍然使用私有变量?

我还应该注意,我理解这些方法的重要性,但我想知道为什么我们懒得将变量设为私有,即使我们通过这些方法让任何人都可以访问它?

chi*_*ity 9

是的,你是对的,它确实有效地使变量公开.但是有一个重要的区别,即它使您能够在以后更改内容:您可以根据需要删除setter,或者将其设置为private,而不会影响使用getter从字段读取的代码.

如果您刚刚将变量设置为public,那么在不破坏字段读取的情况下,您将无法停止对该字段的写入.

它还有其他优点.例如,您可以在synchronized以后进行访问,而不会破坏客户端代码.简而言之,它允许稍后进行大量修改,否则不会在使用该类的代码中造成大量破坏.

你可以添加日志每当有人写入到外地,或防止某些线程编写,或任何额外的逻辑......你可以改变一个领域从类型HashMapTreeMap,如果你的吸气抽象它扔掉,只是返回Map. ......等