java在类中使用方法返回值和引用精确值本身之间的区别
假设我有一个单独的GUI类,它有一个名为“guiWait”的公共布尔值,还有一个返回guiWait的布尔值方法
这两者之间的区别是什么:
while(gui.guiWait)...
及
while(gui.getGuiWait())...
你可以在下面搜索框中键入要查询的问题!
假设我有一个单独的GUI类,它有一个名为“guiWait”的公共布尔值,还有一个返回guiWait的布尔值方法
这两者之间的区别是什么:
while(gui.guiWait)...
及
while(gui.getGuiWait())...
# 1 楼答案
OOP的核心概念是封装。getter和setter方法(例如getguiWait()方法)的使用使得任何人都无法访问对象的内部字段。这样,其他人就无法将内部字段设置为不一致/异常的值。通过使用“getter”和“setter”方法(并使用private隐藏内部字段),您可以确保任何愿意设置或获取字段的人都必须通过您设置的检查。示例类Cat可以将年龄作为其字段。在setter方法中,您将检查用户输入值是否为负值。如果允许“年龄”字段为公共字段,可能会有人将其设置为负值,这毫无意义
# 2 楼答案
这是Data Encapsulation in JAVA的纯粹概念
http://www.tutorialspoint.com/java/java_encapsulation.htm
# 3 楼答案
区别在于能见度。当像第一个示例一样使用
guiWait
public
时,外部调用方可以修改该值。如果使用方法并使变量private
,则调用者无法修改guiWait
变量(尽管如果它是可变的,他们可以修改它引用的对象)。此外,如果您养成了使用getter和setter的习惯,那么稍后如果您需要向获取或设置过程添加逻辑(例如,您需要从其他一些新字段派生值),那么您已经有了这些方法,并且不会通过生成变量private
来破坏任何调用方的代码。因此,在Java中始终使用getter和setter被认为是“最佳实践”# 4 楼答案
如果guiWait是一个公共布尔值,那么为它使用“getter”方法是没有意义的。如果是私人的或受保护的,那就不同了。私有getter方法更灵活,因为您可以更改该变量“get”的实现,并在方法中添加检查或其他内容。私有getter/setter还可以让事情变得更清楚,并确定哪些内容应该被其他类看到,哪些内容只应该在它们所属的单个类中使用。如果您发现确实需要一个特定成员变量的getter(需要某种验证或检查),这是非常常见的,那么仅为该变量执行getter是不一致的