【发布时间】:2012-07-24 06:06:23
【问题描述】:
class A {
boolean f(A a) { return true; }
}
class B extends A {
boolean f(A a) { return false; } // override A.f(A)
boolean f(B b) { return true; } // overload A.f
}
void f() {
A a = new A();
A ab = new B();
B b = new B();
ab.f(a); ab.f(ab); ab.f(b); //(1) false, false, *false*
b.f(a); b.f(ab); b.f(b); //(2) false, false, true
}
你能解释一下第一行最后一个假输出,为什么不是真的吗?
【问题讨论】:
-
我不明白为什么人们会费心发布一个如此简短且不像@JonSkeet 的帖子那样解释性强的答案。
-
前段时间我也有类似的问题,也许这对你有帮助:stackoverflow.com/questions/3883414/…
-
请提高您的接受率
标签: java overloading covariance