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