這裏是我的示例代碼:調用toString()時,將字符串轉換爲對象
String str = "hello";
Object obj = (Object)str;
System.out.println(obj.toString());
我發現對象的源代碼,和toString()方法是:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
我想示例的結果是這個對象的地址,就像[B @ 15db9742,在我將str轉換爲Object之後,但它仍然打印出你好。爲什麼? Shoundn't obj使用Object的方法嗎?任何人都可以向我解釋它的原理嗎?
歡迎[多態性(https://en.wikipedia.org/wiki/Polymorphism_(computer_science))。 :-) *(必須有一個dupetarget這個。)* –
*方法覆蓋* - 您只更改引用類型,實際對象是*仍然是String *,而'String'的'toString'返回實際的字符串 – TheLostMind
請查看以下問題:http:/ /stackoverflow.com/questions/321864/java-dynamic-binding-and-method-overriding –