Object aThing = new Integer(25);
aThing.toString();
難道是Object
或Integer
的toString
的toString
? (我認爲它是Integer
's)。哪個.toString在這種情況下被調用?
Object aThing = new Integer(25);
aThing.toString();
難道是Object
或Integer
的toString
的toString
? (我認爲它是Integer
's)。哪個.toString在這種情況下被調用?
Integer
的toString()
是被調用的。 你可以很容易地用你自己的對象來證明。
子類上的一個被調用,所以在Integer
上的那個。
Integer
類toString()
將被調用。方法調用總是基於對象類型而不是引用類型來決定。
Steve Kuo評論道:除了靜態方法。
除靜態方法 –
@SteveKuo:是的,這是正確的。 – kosa
toString()
在整數類中被執行,因爲它是實例化類的類型。
Integer's
toString
被調用。實現被調用的方法總是由對象本身的運行時類型(類)決定的,而不是由它分配給的變量的類型決定的。在下面的代碼中,兩個調用都是等價的。
Integer i = Integer.valueOf(5);
Object o = i;
i.toString(); // "5"
o.toString(); // "5"
表現這種方式的方法被稱爲Virtual Methods。 Java中的所有非靜態方法都是虛擬的。它們提供Polymorphism的關鍵機制之一。
我不能,我把Eclipse中的變量aThing後面的「dot」'。「,並用'toString():String - Object'顯示下拉菜單.... !!! – user133466
只需編寫你自己的任何對象,覆蓋toString()就可以看到它。不要讓日食欺騙你,這是編譯器在這裏做的。 – Frank