Object aThing = new Integer(25);
aThing.toString();
toStringのかのObjectか? (だと思います。)toStringIntegerInteger
Object aThing = new Integer(25);
aThing.toString();
toStringのかのObjectか? (だと思います。)toStringIntegerInteger
IntegerクラスtoString()が呼び出されます。メソッドの呼び出しは、参照型ではなくオブジェクト型に基づいて常に決定されます。
Steve Kuoがコメントしたように:静的メソッドを除く。
Integer's toStringと呼ばれます。どのメソッド実装が呼び出されるかは、オブジェクトが割り当てられている変数のタイプではなく、オブジェクト自体のランタイムタイプ(クラス)によって常に決定されます。次のコードでは、両方の呼び出しは同等です。
Integer i = Integer.valueOf(5);
Object o = i;
i.toString(); // "5"
o.toString(); // "5"
このように動作するメソッドは、仮想メソッドと呼ばれます。Javaの非静的メソッドはすべて仮想です。それらは、ポリモーフィズムの重要なメカニズムの1つを提供します。
サブクラスのものは呼び出されるので、Integer.
のtoString()は、Integerと呼ばれるものです。独自のオブジェクトを使用して簡単に証明できます。
toString()インスタンス化されたクラスの型であるため、整数クラスの が実行されます。