Object aThing = new Integer(25);
aThing.toString();
是Object
的toString
还是Integer
的toString
?(我认为这是Integer
的。
Integer
类toString()
将被调用。 方法调用将始终根据对象类型而不是引用类型来决定。
正如Steve Kuo评论的那样:除了静态方法。
Integer
的toString()
是被调用的那个。你可以用自己的对象轻松证明这一点。
子类上的那个被调用,所以Integer
上的那个。
整数类中的toString()
,因为它是实例化类的类型。
Integer's
toString
。调用哪个方法实现始终由对象本身的运行时类型(类)确定,而不是由分配给它的变量的类型决定。在下面的代码中,这两个调用是等效的。
Integer i = Integer.valueOf(5);
Object o = i;
i.toString(); // "5"
o.toString(); // "5"
以这种方式运行的方法称为虚拟方法。Java 中的所有非静态方法都是虚拟的。它们提供了多态性的关键机制之一。