程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java基礎-請教高手,以下代碼為何輸出false

java基礎-請教高手,以下代碼為何輸出false

編輯:編程綜合問答
請教高手,以下代碼為何輸出false

public class Test7 {
public static void main(String[]args){
Test test1 = new Test("aa");
Object obj = new Test("aa");
System.out.println(test1.equals(obj));
}

}
class Test{
private String value;
public Test(String v){
value = v;
}
public boolean equals(Test o){
if(o == this){
return true;
}
if(o instanceof Test){
Test test = (Test)o;
return value.equals(test.value);
}
return false;
}
}
為何test.equals(obj)調用的是Object的equals方法,謝謝

最佳回答:


原因在於你類Test定義的equals方法參數是Test類型的 而Test繼承自Object Object本身就有一個equals方法,他的參數是Object類型的
也就是說你的Test實際上有兩個equals方法,一個是參數為Test類型的 一個是為Object類型的.
在你的例子中obj雖然實際類型是Test 但是聲明類型為Object 所以在調用test.equels方法時 實際上是匹配的Object上的那個equals方法而不是Test的. 明白了麼 騷年

dsq1040
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved