我无法理解为什么这个程序打印字符串
class AA {
void m1(Object o) {
System.out.println("Object ");
}
void m1(String o) {
System.out.println("String ");
}
}
public class StringOrObject {
public static void main(String[] args) {
AA a = new AA();
a.m1(null);
}
}
请帮助我了解这是如何打印Sting而不是Object
答案 0 :(得分:3)
Dave Newton的评论是正确的。对该方法的调用将转到最具体的可能实现。另一个例子是:
class Foo {}
class Bar extends Foo {}
class Biz extends Bar {}
public class Main {
private static void meth(Foo f) {
System.out.println("Foo");
}
private static void meth(Bar b) {
System.out.println("Bar");
}
private static void meth(Biz b) {
System.out.println("Biz");
}
public static void main(String[] args) {
meth(null); // Biz will be printed
}
}
答案 1 :(得分:0)
这将尝试拨打最具体的电话。在这种情况下,子类对象获取首选项,即String。