Java 同一个类的不同实例对象竟然可以相互访问各自的private成员

  如题,在看String源码的某个函数时,发现了这个操作是被允许的,而且可以直接改变private字段(不是final按理是可以改变),这与之前的理解有点相背。

  接下来试图整理下Google来的结论:

  Java: Why can I access private fields of other objects?

  抽象点的观点:

  因为访问修饰符在类级别而不是在对象级别上工作。

  比较有说服力的观点:

诸如equals,clone和复制构造函数之类的一些方法在不放弃封装的情况下编写起来会很棘手。

  其它文章的观点:

So encapsulation doesn't mean being closed to all of the rest of the world. It means being selective about whom you want to be open to.

所以封装并不意味着对世界其他所有都封闭,而是意味着选择你想要对谁开放。

转载于:https://www.cnblogs.com/bigbigbigo/p/10513807.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值