class A {
}
class B extends A {
void m1(){
System.out.println(this.hashCode()); // Line 1
System.out.println(super.hashCode()); // Line 2
System.out.println(new A().hashCode()); // Line 3
}
}
class Test {
public static void main(String[] args) {
B bobj=new B();
bobj.m1();
}
}
我有點困惑,因爲我在第1行和第2行得到了相同的hashCode值,而第3行給出了不同的hashCode。爲什麼this.hashCode()和super.hashCode()在子類中返回相同的值?
這聽起來像你可能認爲哈希碼值是基於它所調用的類,但它不是;它基於它被調用的對象。 – Boann
我知道哈希碼值是基於它被調用的對象。這指的是當前的類對象,super指的是直接的父類對象,因此兩者都不相同。那麼爲什麼第1行和第2行返回相同的值? – anirudh
沒有單獨的「父對象」。它是B類的一個對象(它擴展了A類),但它仍然是一個對象。 – Boann