Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Object aThing = new Integer(25); aThing.toString();
是toString的Object还是toString的Integer?(我认为Integer是。)
toString
Object
Integer
Integer类toString()将被调用。方法调用将始终基于对象类型而不是引用类型来决定。
toString()
正如 Steve Kuo 所说:静态方法除外。
子类上的那个被调用,所以Integer.
的toString(),Integer是被调用的那个。您可以使用自己的对象轻松证明这一点。
toString()在整数类中执行,因为它是实例化类的类型。
Integer's toString叫做。调用哪个方法实现总是由对象本身的运行时类型(类)决定,而不是由分配给它的变量的类型决定。在下面的代码中,两个调用是等效的。
Integer's
Integer i = Integer.valueOf(5); Object o = i; i.toString(); // "5" o.toString(); // "5"
以这种方式运行的方法称为虚拟方法。Java 中的所有非静态方法都是虚拟的。它们提供了多态性的关键机制之一。