-2
讓我們在Java中說我有一個A類和延伸A.在Java中關於equals方法對象和類
注意B類:類A和B 不在他們的equals方法!
我做的:
A a = new B();
B b = new B();
a.equals(b);
它配備了假的。我認爲,當我們做到平等時,它動態地綁定到a和b,這會使它成爲現實。或者是因爲在編譯時它看起來是a,並假設equals將是equals(A),並且因爲它的B爲B b = new B();它說錯了?還是我在兩條戰線上都錯了?
如果你沒有定義一個'equals()'方法,那麼默認的'equals()'方法(爲所有的'Object'定義)與'=='相同。這意味着只有當對象是同一個對象時(它不會查看對象中的任何數據)它纔會返回「true」。您創建了兩個對象,因此它們不一樣。 – ajb
鑑於'a'和'b'清楚地指向不同的對象,爲什麼會期望通過'a.equals(b)'比較它們是'真實的'? – dave
如果你爲'B'定義了一個'equals()'方法,那麼'a.equals(b)'確實會調用這個方法。所以你幾乎是正確的 - 'equals'動態綁定。但是當你沒有定義它時會發生什麼,你錯了。 – ajb