Java面試——重載、重寫、重構的區別
阿新 • • 發佈:2019-03-11
不同的 名稱 權限 出現 同時 通過 方法名 java面試 存儲 一、重載
構造函數是一種特殊的函數,使用構造函數的目的是用來在對象實例化時初始化對象的成員變量。由於構造函數名字必須與類名一致,我們想用不同的方式實例化對象時,必須允許不同的構造方法同時存在,這就用到了重載。
重載雖然起源於構造方法,但是在普通方法中也可以使用方法的重載。方法的重載就是在同一個類中允許同時存在多個同名方法,只要這些方法的參數類型、個數、順序不同即可。
package com.java.test; public class ReLoad { //構造方法的重載 public ReLoad(int a,int b) { System.out.println("a+b"); } public ReLoad(int a){ System.out.println("a"); } //普通方法的重載 public static int reload(int a,int b){ return a+b; } public static int reload(int a){ System.out.println(a); return a; } public static double reload(double a,int b){ return a+b; } public static double reload(int a,double b){ return a+b; } }
知道了方法的重載,我們很容易想到定義不定長參數來實現方法的重載。
//定義不定長參數實現方法的重載
public static int reload(int...a){
int s=0;
for(int i=0;i<a.length;i++){
s+=i;
}
return s;
}
//調用
reload(1,2,3);
reload(1,2,3,4,5);
二、重寫
重寫(又叫覆蓋)是繼承的實現方式之一,也就是說只有在子類中才會出現方法的重寫。重寫是指在子類中保留父類成員方法的名稱不變,參數列表不變,重寫成員方法的實現內容,修改成員方法的返回值類型(必須滿足修改的返回值類型是父類中同一方法返回值類型的子類),或更改成員方法的存儲權限。
package com.java.test; class ExtendsTest{ protected int adds(int a,int b){ int s=0; s=a+b; return s; } protected ExtendsTest doIt(){ return null; } } public class tests extends ExtendsTest{ //重寫成員方法的實現內容,修改成員方法的存儲權限 public int adds(int a){ return a; } //修改成員方法的返回值類型 protected tests doIt(){ return null; } //重構,只重寫實現內容 protected int adds(int a,int b){ System.out.println("重構"); return a+b; } }
三、重構
重構是繼承中一種特殊的重寫方式,只重寫子類方法中的實現內容,成員方法的名稱,參數類型、個數及成員方法的返回值都保持不變。
綜上,重載可以出現在任意類的任意方法中,方法的名稱相同,參數的類型,個數,順序三個中只要有一個不同即可實現方法的重載。重寫和重構是發生在子類中,也就是說只有出現繼承才會需要重寫和重構的實現。重寫可以通過修改成員方法的實現內容,修改成員方法的返回值類型或更改成員方法的存儲權限實現,但必須保證方法名和參數列表不變。而重構是一種特殊的重寫方式,只可以重寫實現內容,其他都不能改變。
寫在最後:
既然看到這裏了,覺得筆者寫的還不錯的就點個贊,加個關註唄!點關註,不迷路,持續更新!!!
Java面試——重載、重寫、重構的區別