所以我做一個類有一天,使用Eclipse的方法來創建equals方法時,我意識到,它生成以下工作代碼:的Java私有字段能見度
class Test {
private int privateInt;
[...]
public boolean equals(Object obj) {
[...]
Test t = (Test) obj;
if (t.privateInt == privateInt) {
[...]
}
}
t.privateInt .. ????這是假設是私人的!所以我想除私人,保護,包裹保護和公開外,還有一個字段可見性。
那麼這裏發生了什麼?這是怎麼回事? 有人會用這個嗎?這不破壞封裝嗎?如果班級沒有增變器,我改變了這個呢?這是否也發生在C++上?這是一個面向對象的習語嗎?如果不是,那麼Java爲什麼要這樣做?
一般來說,我可以在哪裏找到關於此的信息?
謝謝。
好的...我現在明白了...但爲什麼?爲什麼Java讓這種情況發生?你能想到一些真實生活的例子。我得到爲什麼它應該在等於..但是,必須有一個更好的例子.. – pek 2008-11-26 15:20:04
唯一的其他例子將類似於等於你給你的類的另一個實例作爲參數。至於Java爲什麼這麼做,它在OO語言中是非常標準的 - C++的工作方式也是一樣的。在C++中重載==:http://artis.imag.fr/~Xavier.Decoret/resources/C++/operator.html – 2008-11-26 16:37:10