JAVA函數的重載和重寫


一、什么是重載(overlording)

在JAVA中,可以在同一個類中存在多個函數,函數名稱相同但參數列表不同。這就是函數的重載(overlording)。這是類的多太性表現之一。

 

二、重載的作用:

舉個現實生活中的實例。假如你是個木工,我要讓你制作桌子(返回值)。然后,我給了你紫檀木,你就可以制作一張紫檀桌子;我給了你黃花梨,你可以做黃花梨的桌子。這些不同材質的木料,就是參數。返回的都是桌子,但是具體使用哪個函數,就根據傳入的木料不同來決定的。

所以,可以根據所傳遞進來的不同參數,決定具體調用哪個函數。提高了函數使用的靈活性。

 

三、重載的特征:

函數名和返回值類型完全一致。

參數的數量不同、或數量相同而類型和次序不同,以方便JVM區分到底調用哪個函數。

 

四、重寫Overriding

“重載”不同於“重寫”

“重寫(覆蓋)”概念存在於繼承關系中,子類可繼承父類中的方法而不需要單獨編輯,這提供便捷化。但有的時侯,子類不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫。

父類中存在一個函數,子類中也存在一個同名函數,在了類中對函數重新編輯,做得更具體化。

重寫的規則:

1、在子類中可以根據需要對從父類中繼承來的方法進行重寫。

2、重寫的方法和被重寫的方法必須具有相同方法名稱、參數列表和返回類型。

3、重寫方法不能使用比被重寫的方法更嚴格的訪問權限。

 

五、實例:

創建MyClass類,其中包含兩個類,方法名一樣,參數不一樣

復制代碼
package study;

//MyClass類中,有兩個print方法,但是參數不一樣,實現了重載
public class MyClass {
    public void print(String name){
        System.out.println("姓名:"+name);
    }
    public void print(String name,int age){
        System.out.println("姓名:"+name+"\t年齡:"+age);
    }
}
復制代碼

實例化MyClass類:

復制代碼
import study.*;

public class MyTest {
    public static void main(String[] args) 
    {
        MyClass c=new MyClass();
        c.print("張三");
        c.print("李四",20);
    }
}
復制代碼

輸出結果:

姓名:張三
姓名:李四  年齡:20

 

 

如果函數名和參數類型一致,但函數返回值類型不一樣,這不叫重載,這是一種錯誤寫法。

因為函數名和參數類型一致時,JAVA編輯器不知道要返回哪個結果,所以這種情況是不允許的,如以下代碼為錯誤代碼

1
2
3
4
5
6
7
8
9
10
11
package  study;
 
public  class  MyClass {
     public  void  print(String name){
         System.out.println( "姓名:" +name);
     }
     public  int  print(String x){
         System.out.println( "姓名:" +name+ "\t年齡:" +age);
         return  1 ;
     }
}

方法重復,錯誤。

 

 
 


免責聲明!

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



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