在这种情况下调用哪个 .toString


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

ObjecttoString还是IntegertoString?(我认为这是Integer的。

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

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

IntegertoString() 是被调用的那个。你可以用自己的对象轻松证明这一点。

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

执行

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

调用

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

Integer i = Integer.valueOf(5);
Object o = i;
i.toString(); // "5"
o.toString(); // "5"

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

最新更新