1 //方法的重寫 2 /* 3 注意:方法的重寫要遵循“兩同兩小一大”規則 4 “兩同”即方法名相同、形參列表相同; 5 “兩小”(1)指的是子類方法返回值類型比父類方法的返回值類型更小或相等,【什么意思?】 6 (2)子類方法聲明拋出的異常類應比父類方法聲明拋出的異常類更小或相等。 7 “一大”指的是子類方法的訪問權限應比父類方法的訪問權限更大或者相等。 8 9 特別注意:覆蓋方法和被覆蓋方法要么都是類方法,要么都是實例方法,不能一個是類方法,一個是實例方法。 10 例如下面代碼會引起錯誤: 11 class BaseClass 12 { 13 public static void test(){code...} 14 } 15 class SubClass extends BaseClass 16 { 17 public void test(){code...} 18 } 19 */ 20 class Bird 21 { 22 public void fly() 23 { 24 System.out.println("我在天空自由自在的飛翔..."); 25 } 26 27 public static void Test() 28 { 29 System.out.println("父類的靜態方法運行..."); 30 } 31 32 private void Demo() 33 { 34 System.out.println("我在父類中是私有的,外邊的類看不見我..."); 35 } 36 } 37 38 public class Ostrich extends Bird 39 { 40 //重寫Bird類的fly()方法。 41 public void fly() 42 { 43 //通過super調用父類的方法。 44 //super.fly(); 45 System.out.println("我只能在地上奔跑..."); 46 } 47 48 /* 49 如果我在子類中定義了下面的方法,則是子類和父類的方法的重載而不是重寫了, 50 因為如果是重寫的,則要求方法名也要相同。 51 52 //重載Bird類的fly()方法。 53 public void fly(int x) 54 { 55 //通過super調用父類的方法。 56 super.fly(); 57 System.out.println("我只能在地上奔跑..."+x); 58 } 59 */ 60 61 //重寫Bird類的Test()方法 62 public static void Test() 63 { 64 //通過類名調用父類中的Test()靜態方法. 65 Bird.Test(); 66 System.out.println("我覆蓋了父類中的靜態方法..."); 67 } 68 69 public static void Demo() 70 { 71 System.out.println("我是子類特有的方法,不是繼承自父類的,因為父類是私有的!"); 72 } 73 74 public static void main(String[] args) 75 { 76 Ostrich os = new Ostrich(); 77 os.fly(); 78 os.A(); 79 80 Test();//前面省略了類名Ostrich 81 82 Demo(); 83 } 84 }