Thinking in java 里有这么一句话:so private allows you to freely change that member without concern that it will affect another class in the same package;
我的理解就是我可以随意改变private成员,不必考虑这么做是否会影响其他类!
但有这样的情况:
一个类a中有private属性,public方法,方法中调用了private属性;然后另一个类b调用此public方法,此时可以运行,但如果把a中private属性更改了,b中就会报错吧,那么private的作用何在?
很是不解,求大神指导!
private属性是规约,不受其他class的直接影响,但是可以为当前类所用,如果你提供一个public方法去修改private的属性,
那说明是你允许其他类这么做,而且其他类只有通过这个渠道可以修改。注意,是你允许,如果你不开发这个修改只是开发对外的只读
是不会有问题的。
像现在很多的开源项目的javabean中的属性都是定义为private,而开放public的get/set方法来规约其他使用它的类必须使用这两个方法
来操作private属性而没有其他方式。从而很好的封装行为
这里说的随便修改,是说一个类的外部接口不变,所以不用担心调用它的人的代码受影响。比如说删除或者改名一个private变量,当然你自己类内部的别的地方调用代码也需要修改。但是只局限在你的代码需要修改。人家调用你的代码就不用修改。
你修改了A的private,A中调用该属性的public方法也要进行修改的呀,而其他类去调用A中的public方法是不用改变的。所以没受到影响。
‘private属性更改了,b中就会报错吧’ 楼主说的这句话能成立吗? 你把private属性更改了,你public里的方法调用的private属性不是也改了? 与另一个类有啥关系? 另一个类根本不关系你的private属性叫什么,只关心你的public方法返回了什么。。。
还有一点你改private属性,首先报错的是你a类中的public方法啊,你把public方法报错解决了,b类还报错?【前提是你没改a类的pubic方法名什么的】。。。。建议楼主写代码试一试。。。。或许能有特别的结构(⊙﹏⊙)b
楼上只说对了一般 这里不会影响的原因是因为一般来说外部类是无法访问该类的私有变量 除了 使用反射获取该类的信息
private的作用在于某些类会有一些专有的成员属性并且需要对外部隐藏或者有限的访问比如get set方法等