java向上轉型方法調用的問題

看代碼:
public class Base
{
public void print(String str)
{
System.out.print("Base print !");
}
}

public class Sub extends{
public void println(String str)
System.out.println("Sub print"));
}

public class Test
{
public static void main(String[] args)
{
Base test=new Sub();
test.print("hello");
}
}
打印的結果是:Sub print !
向上轉型,父類的應用調用之類的方法沒有問題,但是當子類的參數變爲:print(Sring... str)時,test.print("hello"),調用的卻是父類的方法。子類的方法按說應該是接收字符串沒有問題的,但是卻調用了父類的方法。第三種情況,父類的方法參數爲String... str,子類的方法參數格式爲String[] str時,這時調用test.print("hello"),輸出的卻是Sub print,這就更難理解了,明明子類方法接收的只是字符串數組,傳的是字符串,卻能調用!
第四種情況,父類的爲 String str,子類的爲空時,又調用了父類的方法。好詭異。
有知道原因的請指教
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章