1
Object aThing = new Integer(25);
aThing.toString();

toStringObject还是toStringInteger?(我认为Integer是。)

4

5 回答 5

3

IntegertoString()将被调用。方法调用将始终基于对象类型而不是引用类型来决定。

正如 Steve Kuo 所说:静态方法除外。

于 2012-10-15T20:08:34.510 回答
1

子类上的那个被调用,所以Integer.

于 2012-10-15T20:08:09.913 回答
1

toString(),Integer是被调用的那个。您可以使用自己的对象轻松证明这一点。

于 2012-10-15T20:08:25.500 回答
1

toString()在整数类中执行,因为它是实例化类的类型。

于 2012-10-15T20:08:59.540 回答
1

Integer's toString叫做。调用哪个方法实现总是由对象本身的运行时类型(类)决定,而不是由分配给它的变量的类型决定。在下面的代码中,两个调用是等效的。

Integer i = Integer.valueOf(5);
Object o = i;

i.toString(); // "5"
o.toString(); // "5"

以这种方式运行的方法称为虚拟方法。Java 中的所有非静态方法都是虚拟的。它们提供了多态性的关键机制之一。

于 2012-10-15T20:13:47.110 回答