以下代码说明了这种情况:
class Human {
private String heart = "default heart";
public void control(Human h) {
h.heart = "$%^&*@@!#^";
}
public String getHeart() {
return heart;
}
}
public class HumanTest {
public static void main(String[] args) {
Human deb = new Human();
Human kate = new Human();
System.out.println(deb.getHeart());
kate.control(deb);
System.out.println(deb.getHeart());
}
}
不幸的是,在这里,deb的心[私有变量]被修改了。 :)
Java允许代码运行而没有任何错误。但是,即使代码在同一类中,也可以赋予对象访问其他对象的私有成员特权的合理性吗?
Java不应该禁止这样做吗?
据我所知,私有意味着限制访问超出类源代码。但是,上面的源代码中应用了相同的概念。结果是灾难性的,因为任何随机的人都无法改变一个人的心脏。
最佳答案
如果结果是灾难性的,则不应编写该类的代码,以便它允许这样做。 “错误”不是由类外部的代码引起的,而是由类本身的代码引起的。因此,这只是代码中的错误。
如果Java不允许,则只能按公共属性比较同一类的对象,例如,这会破坏封装(通过公开私有内容)和/或变得很慢(通过强制创建防御性副本)私有属性,以使其可用于其他对象。