Java方法的重寫和重載


  • 重寫

  在java中有很多的繼承,繼承下來的有變量、方法。在有一些子類要實現的方法中,方法名、傳的參數、返回值跟父類中的方法一樣,但具體實現又跟父類的不一樣,這時候我們就需要重寫父類的方法,就比如我們有一個類叫做Animals,Animals類中有一個叫做Call,然后我們繼承Animals又生成了Cat類和Dog類,Cat和Dog也分別有自己特別的叫聲,程序如下:

復制代碼
 1 class Animals {
 2     public void call() {
 3         System.out.println("啊啊啊啊啊啊啊");
 4     }
 5 }
 6 
 7 
 8 public class Cat extends Animals {
 9     @Override
10     public void call() {
11         
12         System.out.println("喵喵喵喵喵");
13     }
14 }
15 
16 
17 public class Dog extends Animals {
18 
19     @Override
20     public void call() {
21         System.out.println("汪汪汪汪汪汪");
22     }
23     
24     public static void main(String[] args) {
25         Animals animals = new Animals();
26         animals.call();
27         
28         Cat cat = new Cat();
29         cat.call();
30 
31         Dog dog = new Dog();
32         dog.call();
33     }
34 
35 }
復制代碼

打印結果如下:

 

  • 重載

  重載是在一個類中實現的,有多個同名方法,但參數不一樣,包括參數類型、參數個數、還可以沒有參數,總之每個重載的方法的參數必須不一樣。

現在我寫一個小程序,用來進行比較兩個數值大小的,代碼塊如下:

復制代碼
 1 public class Compare {
 2 
 3     public void max(int a, int b) {
 4         System.out.println(a>b?a:b);
 5     }
 6     
 7     public void max(float a, float b) {
 8         System.out.println(a>b?a:b);
 9     }
10     
11     
12     public void max() {
13         /**
14          * 無參重載
15          * */
16         System.out.println("Coding...");
17     }
18     public static void main(String[] args) {
19         // TODO Auto-generated method stub
20         Compare compare = new Compare();
21         compare.max(102, 23);
22         compare.max(2.0f, 3.0f);
23         compare.max();
24     }
25 
26 }
復制代碼

打印結果如下圖:

  • 總結

  重寫是外殼不變,核心變。也就是說方法名不變,參數不變,具體實現可以改變。一般是在父類中聲明方法,在子類中重寫。

  重載是方法名不變,但參數一定要變。而且重載的方法一般都寫在一個類中。用一張圖來表示區別如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM