下面的代碼說明了情況:Java是否完全遵循面向對象的編程模型?
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不允許這樣做?
據我所知,私人意味着限制超出類源代碼的訪問。但是在上面的源代碼中應用了相同的概念。結果是災難性的,因爲一個人的心不能被任何隨機的人修改。
很少有語言是純粹的OOP。所有你需要閱讀的是'public static void main'來實現main運行時沒有Object。 – 2012-04-17 13:27:43
你的問題根本不在於OOP。它是關於Java中的訪問控制機制。它沒有是/否的答案。吉姆戈斯林這樣設計的:就是這樣。如果你想知道爲什麼,它可以在語言規範,JVM規範或Jim的頭上。 – EJP 2012-04-17 22:23:04
那麼您希望私人會員使用什麼?如果沒有公共會員使用,那麼你認爲私人會員在哪裏使用。 – Dhananjay 2012-04-18 06:32:39