您好,登錄后才能下訂單哦!
java是如何區分重載和重寫,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
這個問題比較簡單,適合小白,主要區分方法的重載和重寫。有時候經常搞混,下面就是為了很好的去整理區分一下。
一個類中,可以有很多的構造方法,而且名字相同都是類名,其實這些方法就已經構成了重載。重寫也就是說,在一個類中,可以有很多名字相同的不同方法。現在一個問題來了,就是java是如何區分這些方法的呢?
其實區分重載,有一個很簡便的方法,那就是每一個方法有一個獨一無二的參數列表。
public class Son extends Father{
int fff(){
return 0;
}
String fff(int x,String y){
return "";
}
void fff(String y,int x){};
public static void main(String[] args) {
Son son=new Son();
}
}
由以上代碼可以看到:
1、參數個數不同可以區分
2、參數的順序不同可以區分。
注意;返回值類型不同不能區分。
為什么返回值類型不同不能區分呢?這是因為有時候我們定義的方法,我們只是想要簡單地去調用,而不想去獲取他的返回值。
比如:在調用fff()時,只需要調用fff()或者是fff(1,"數據")而不去獲取他的返回值。這樣jvm是無法區分的。
1、在子類中可以根據需要對從基類中繼承來的方法進行重寫。
2、重寫的方法和被重寫的方法必須具有相同方法名稱、參數列表和返回類型。(注:返回值可以為父類中返回值的子類型.參數若為子類,則不是重寫是重載)
3、重寫方法不能使用比被重寫的方法更嚴格的訪問權限。
4、重寫方法不能聲明拋出比被重寫方法范圍更大的異常類型。
總結:重寫是子類對所繼承父類相同方法的一種更改,這個更改需要遵循格式按照父類的格式,訪問權限,拋出異常等等,都在父類方法控制范圍內,內部具體實現可以實現不同的效果。
通俗一點來說:重寫就是對父類的的同一個方法的改寫,但是別人怎么知道你這是重寫,不是添加的新方法?這就要求格式必須跟父類相同,別人一看,呀,他倆長的一模一樣(指的上面2,3,4規則),肯定是重新寫了,就是重寫。
定義父類:
public class Father extends Grandpa {
String add(int a,int b){
int c=a+b;
return ""+c;
}
}
定義子類
public class Son extends Father{
String add(int a,int b){
int c=a+b;
return ""+c;
}
public static void main(String[] args) {
Son son=new Son();
}
}
這樣就完成了方法的重寫。
關于java是如何區分重載和重寫問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。