Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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_Oop_Encapsulation_Instance Variables - Fatal编程技术网

Java 将实例变量设为私有是否只对子类有利?

Java 将实例变量设为私有是否只对子类有利?,java,oop,encapsulation,instance-variables,Java,Oop,Encapsulation,Instance Variables,我是初学者。我目前正在学习OOP。据我所知,使实例变量私有意味着它只能在类中访问。因此,您需要创建集合并获取方法,以便对子类进行访问 但是我可以直接在它所属的类中更改私有实例变量,对吗?这就引出了我的问题 将私有变量与getter和/或设置一起使用以控制如何以及谁可以与该变量交互的目的 类内的私有变量只能在类内访问。这意味着类之外的任何内容都不能读取或写入该变量 通过提供一个公共getter,您可以让所有东西都具有读取该属性的能力 通过提供一个公共setter,您可以让一切都能够更改该属性 您可

我是初学者。我目前正在学习OOP。据我所知,使实例变量私有意味着它只能在类中访问。因此,您需要创建集合并获取方法,以便对子类进行访问


但是我可以直接在它所属的类中更改私有实例变量,对吗?这就引出了我的问题

将私有变量与getter和/或设置一起使用以控制如何以及谁可以与该变量交互的目的

类内的私有变量只能在类内访问。这意味着类之外的任何内容都不能读取或写入该变量

通过提供一个公共getter,您可以让所有东西都具有读取该属性的能力

通过提供一个公共setter,您可以让一切都能够更改该属性

您可以更改getter和setter上的访问修饰符,以控制谁可以读取或更改变量。您还可以完全省去getter或setter,使变量从类外部只读或只写

如果您不熟悉访问修饰符,我强烈建议您阅读它们。学习时最常见的是公开和私人。公共基本上意味着一切都可以看到它,而私人已经被讨论过了

除上述所有功能外,还可以在getter或setter中添加其他功能。例如,当有人使用setter来确保维护某些规则时,可以验证输入

E.X:如果你有一个字符串类型的变量,它是用来保存9位数字的。使用setter,您可以确保传入的任何内容都是有效的数字,并且具有特定的长度。如果没有,您可以阻止该值通过。。。通常通过抛出异常


好处广泛,不限于子类。不要真的考虑某个特定的类或对象的好处;但是,它的好处是让程序员能够更好地控制其他人如何与您的类交互。

当然。您可以在类内更改您的私有变量。这不仅仅是在类内更改您的私有变量->这还将使这些变量在类外不可访问,而对您的子类也不可访问!如果希望子类具有访问权限,可以使用
protected
。私有的只适用于该类是的,
Private
是一个访问修饰符。如果希望变量为常量,请使用
final
。这里是最伟大的导师: