1. 程式人生 > 其它 >重寫和過載的區別

重寫和過載的區別

技術標籤:筆記java

重寫和過載的區別

方法重寫
方法重寫是發生在執行期間的,子類對父類中的方法的內部邏輯進行重新改造,不能改變外部的定義。
特點
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()方法"); } }

以上就是方法過載和方法重寫的區別,文章內容僅代表個人觀點,若有不對的地方希望大家多多指正。