在这种情况下调用.toString?

时间:2012-10-15 20:06:16

标签: java

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

toString的{​​{1}}还是Object的{​​{1}}? (我认为这是toString的。)

5 个答案:

答案 0 :(得分:3)

将调用

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

正如Steve Kuo评论的那样:静态方法除外。

答案 1 :(得分:1)

调用子类中的那个,所以Integer上的那个。

答案 2 :(得分:1)

toString()的{​​{1}}是被调用的Integer。 您可以使用自己的对象轻松证明这一点。

答案 3 :(得分:1)

执行整数类中的

toString(),因为它是实例化类的类型。

答案 4 :(得分:1)

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

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

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

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