以下代码说明了这种情况:

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不允许,则只能按公共属性比较同一类的对象,例如,这会破坏封装(通过公开私有内容)和/或变得很慢(通过强制创建防御性副本)私有属性,以使其可用于其他对象。

09-19 23:17