在下面的代碼:爲什麼調用基類方法?
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。 –