在下面的代码:为什么调用基类方法?
b.show("str");
//prints: from base
d.show("");
//prints: from str
难道一个请解释为什么它的表现有所不同? 我想知道为什么Base b = new Sub(),基类中的b.show()会被调用。 我只是使用DifferentClass,作为参考显示b.show(String)在非继承机会下调用。
public class TestClass {
public static void main(String[] args) {
Base b = new Sub();
b.show("str");
DifferentClass d = new DifferentClass();
d.show("");
}
}
class Base {
public void show(Object obj) {
System.out.println("from base");
}
}
class Sub extends Base {
public void show(String str) {
System.out.println("from sub");
}
}
class DifferentClass {
public void show(String str) {
System.out.println("from str");
}
public void show(Object obj) {
System.out.println("from obj");
}
}
+1。究竟。关键是该子方法不会“覆盖”基类方法,但会超载它。我同意尽可能经常使用@Override。 –