重寫和過載的區別
阿新 • • 發佈:2021-01-16
重寫和過載的區別
方法重寫
方法重寫是發生在執行期間的,子類對父類中的方法的內部邏輯進行重新改造,不能改變外部的定義。
特點
1:方法重寫發生在子類中;
2:重寫方法傳入的引數必須與父類中方法的傳入引數一致;
3:返回值型別,方法名必須與父類的一致,丟擲異常的範圍小於父類,訪問修飾符的許可權要大於父類;
4:如果父類方法的訪問修飾符為(private/final/static),則子類方法就不能被重寫;
5:父類的構造方法不能被子類重寫;
public class Test{
public static void main(String[] args) {
DemoSon demoson= new DemoSon();
//呼叫DemoSon類中的dosth()方法
demoson.dosth(); //輸出:DemoSon子類重寫的Demo父類的dosth()方法
Demo1 demo1=new Demo1();
//直接呼叫父類Demo的dosth()方法
demo1.dosth();//輸出:Demo父類的方法
}
}
class Demo{
public void dosth(){
System.out.println("Demo父類的方法");
}
}
class DemoSon extends Demo{
public void dosth (){//實現Demo類中dosth()方法的重寫
System.out.println("DemoSon子類重寫的Demo父類的dosth()方法");
}
}
class Demo1 extends Demo{
}
方法過載
方法過載是發生在編譯期間的,同一個類中,多個同名方法根據傳入引數不同,執行不同的邏輯處理。
特點
1:方法過載必須在同一個類中;
2:方法的引數列表必須不一致(型別不一致\數量不一致\順序不一致);
3:方法的返回值和訪問修飾符可以不同;
4:構造方法可以被過載;
/*
* Dome類中實現了dosth()方法的三次過載
*/
public class Dome{
public void dosth(){
System.out.ptinln("沒有引數的dosth()方法");
}
public void dosth(int n){
System.out.ptinln("一個int型別的引數的dosth()方法");
}
public void dosth(int n,String str){
System.out.ptinln("一個int型別的引數和一個String型別引數的dosth()方法");
}
}
以上就是方法過載和方法重寫的區別,文章內容僅代表個人觀點,若有不對的地方希望大家多多指正。