Deb*_*iti 1 java oop jvm private object
以下代码说明了这种情况:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,deb的心[私有变量]被修改了.:)
Java允许代码在没有任何错误的情况下运行.但是,即使代码在同一个类中,给对象提供访问其他对象的私有成员的权限也是合理的吗?Java不应该禁止这个吗?
据我所知,私有意味着限制访问超出类源代码.但是在上面的源代码中应用了相同的概念.结果是灾难性的,因为一个人的心脏不能被任何随机的人修改.
如果结果是灾难性的,则不应对类进行编码以使其允许."bug"不是由类外部的代码引起的,而是由类本身的代码引起的.所以这只是代码中的一个错误.
如果Java不允许它,你只能通过它们的公共属性比较同一类的对象,例如,它会破坏封装(通过暴露私有东西),和/或非常慢(通过强制制作防御性副本私有属性使其可用于其他对象.