Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在类中使用方法返回值与引用精确值本身之间的区别_Java - Fatal编程技术网

Java 在类中使用方法返回值与引用精确值本身之间的区别

Java 在类中使用方法返回值与引用精确值本身之间的区别,java,Java,假设我有一个单独的GUI类,它有一个名为“guiWait”的公共布尔值,还有一个返回guiWait的布尔值方法 这两者之间的区别是什么: while(gui.guiWait)... 及 如果guiWait是一个公共布尔值,那么为它使用“getter”方法是没有意义的。如果它是私人的或受保护的,那就不同了。私有getter方法更灵活,因为您可以更改该变量“get”的实现,并在方法中添加检查或其他内容。私有getter/setter还可以让事情变得更清楚,并确定哪些内容应该被其他类看到,哪些内容只

假设我有一个单独的GUI类,它有一个名为“guiWait”的公共布尔值,还有一个返回guiWait的布尔值方法

这两者之间的区别是什么:

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())...