深入瞭解Java方法的重載與重寫
1.方法的重載
1.1.基本介紹
在同一個類中,允許多個重名方法的存在,但要求形參列表不一致。
比如:
System.out.println(11)//輸出整數 System.out.println("Javayyds")//輸出字符串 System.out.println("1.1")//輸出浮點型
1.2.重載的好處
減輕瞭對方法起名和記名的麻煩。
1.3.重載使用細節
方法名:必須相同
參數列表:必須不同(參數的類型、參數的個數、參數的順序至少有一個不相同,參數名無要求)
返回類型:無要求
public int calculate(int a,int b){} public int calculate(int num1,int num2){}//不構成重寫,參數名不影響參數列表 public double calculate(int a,int b){}//不構成重寫,返回類型無要求
1.4.可變參數
使用可變參數可以將一個類中多個相同名相同功能但不同參數的方法封裝成一個方法。
public int calculate(int a,int b){ return a + b; }//求兩數和 public int calculate(int a,int b,int c){ return a + b + c; }//求三個數的和 public int calculate(int a,int b,int c,int d){ return a + b + c + d; }//求四個數的和
使用可變參數優化:
public calculate(int...sums){//表示接受多個int類型的參數 int sum = 0; for(int i = 0;i < sums.length;i ++){//使用時可以把sums當作一個數組 sum += sums[i]; } return sum; }
可變參數細節:
- 可變參數的"…"是固定的不能改變
- 可變參數的實參有0個到多個
- 可變參數的實參可以是數組
- 可變參數的本質就是數組
- 可變參數和普通類型的參數可以在一起使用,但是必須保證可變參數在最後
- 一個形參列表中隻能出現一個可變參數
public int sum(int...sums,int b){}//錯誤,可變參數必須在最後 public int sum(int a,int...sums,String...s)//錯誤,一個形參列表隻能有一個可變參數
2.方法的重寫
2.1.基本介紹
子類中有一個方法和父類的一個方法返回類型、方法名、參數列表都相同,則構成重寫;
2.2.重寫的好處
重寫可以提高代碼的復用性
重寫使子類可以在不修改父類方法的情況下,進行方法的修改與功能的拓展
2.3.重寫的細節
子類方法的方法名、參數列表必須與父類的完全一致。
子類方法的返回類型必須和父類的返回類型一樣,或者是父類返回類型的子類。
class Animal{ public object m(){}; } class cat extends Animal{ publci String m(){};//構成重寫,String是objec的子類 }
子類方法不能縮小父類方法的訪問權限
class Animal{ public void m(){}; } class cat extends Animal{ protected void m(){};//錯誤,訪問權限 protected < public }
重寫方法不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常
重寫後可以通過super關鍵字調用原方法
public class test { public static void main(String[] args) { Cat cat = new Cat(); cat.m(); } } class Animal { public void m() { System.out.println("這是父類的方法~"); } } class Cat extends Animal { @Override public void m() { super.m();//用super關鍵字調用父類中的方法 } }
構造方法不能被重寫
構造方法要求方法名與類名一致,而方法重寫則要求方法名相同,所以子類無法重寫父類的構造方法
3.重寫與重寫的對比
名稱 | 范圍 | 方法名 | 形參列表 | 返回類型 | 訪問修飾符 |
---|---|---|---|---|---|
重載 | 本類 | 必須相同 | 必須不同 | 無要求 | 無要求 |
重寫 | 父子類 | 必須相同 | 必須相同 | 重寫方法的返回類型必須和父類相同或是其子類 | 子類不能縮小訪問權限 |
重寫與重載的區別主要在於形參列表
重寫規則可以記住口訣:兩同兩小一大(方法名和參數相同、子類返回類型和拋出異常小於等於父類、子類訪問權限大於等於父類)
到此這篇關於深入瞭解Java方法的重載與重寫的文章就介紹到這瞭,更多相關Java方法重載 重寫內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 一篇文章帶你深入瞭解Java對象與Java類
- Java中super和this關鍵字詳解
- Java 面向對象之繼承篇詳解原理與特點
- Java面向對象關鍵字extends繼承的深入講解
- Java語言之包和繼承詳解