1 class Human{ 2 } 3 4 class Man extends Human{ 5 } 6 7 class Woman extends Human{ 8 } 9 10 public class Test { 11 12 void show(Human h) { 13 System.out.println("Human"); 14 } 15 16 void show(Man m) { 17 System.out.println("Man"); 18 } 19 20 void show(Woman w) { 21 System.out.println("Women"); 22 } 23 24 public static void main(String [] argv) { 25 Human a = new Man(); 26 Human b = new Woman(); 27 Human c = new Human(); 28 Test test = new Test(); 29 test.show(a); 30 test.show(b); 31 test.show(c); 32 } 33 }
以上程序的輸出應該全是"Human",首先確定這是重載而沒有涉及到多態,程序會根據調用方法的參數類型來確定應該調用哪一個方法,這是在編譯期間就需要確定的,而以上的a,b,c的靜態類型(聲明類型)是唯一能在編譯時確定的,所以會有這樣的輸出,如果注釋掉第一個show方法,編譯則不能通過,提示找不到方法的原型。