詳解重寫和過載的區別 看完不會舉報我

2021-10-23 11:47:52 字數 1042 閱讀 4479

一、方法的過載

1.方法名相同

2.方法引數不同(個數、型別)

3.方法的返回值型別不影響過載

為了更直觀的了解 我舉乙個**的例子

class test

//下面三個方法構成了過載

// 1.他們的方法名字都相同

// 2.方法裡的引數個數不一樣,引數型別也不一樣(有int 有double)

// 3.可以看到第乙個返回值是int型別,第二個和第三個是double型別但不影響過載

public static int add(int x, int y)

public static double add(double x, double y)

public static double add(double x, double y, double z) 二、重寫

首先要清楚重寫發生在不同類當中,且是繼承關係

1.方法名相同

2.引數列表相同

3.返回值相同

class aa

public void eat()

@override

public string tostring() ';

}class bb extends aa// @override

// public void eat()

}public class test }

首先我們要知道父類是不能呼叫子類的屬性或者方法的,我們可以看到bb是繼承aa的,先遮蔽bb類中重寫的eat()方法,此時在test的main方法中發生向上轉型,父類呼叫自己的eat方法 aa.eat();

輸出結果:我是aa的小狗正在吃東西

當我們解除遮蔽重寫bb類中的eat()方法時,還是執行** aa.eat();發生執行時繫結,此時eat就是bb類重寫的而不是aa父類裡面的eat方法

執行結果:我是bb的小狗正在吃東西

注意:1.如上面eat方法不能被private修飾

2.訪問修飾限定符不一定相同(子類的限定要大於等於父類的)

3.靜態的方法不能被重寫

重寫和過載的區別

過載是指同乙個類中有若干個名稱相同但引數不同的方法。呼叫方法時,系統會根據實參情況,呼叫引數完全匹配的那個方法。重寫是指在繼承關係中,在派生類中重寫由基類繼承來的方法,這時基類和派生類中就有兩個同名的方法。系統根據物件的 實際型別呼叫相應版本的方法,當物件型別為基類時,系統呼叫基類中的方法。當物件型...

過載和重寫的區別

對於剛學習的大學生。總是看到問過載和重寫的區別。其實過載和重寫本身沒有太大意義。因為過載主要發生在統一個類的多個同名方法之間。而重寫是法正在子類和父類的同名方法之間。並沒有太大聯絡。當然父類方法和自雷方法之間也會發生過載。因為子類會獲得父類方法。重寫遵循 兩同兩小一大 規則。兩同指 方法名相同,引數...

過載和重寫的區別

重寫方法的規則 1 引數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是過載。2 返回的型別必須一直與被重寫的方法的返回型別相同,否則不能稱其為重寫而是過載。3 訪問修飾符的限制一定要大於被重寫方法的訪問修飾符 public protected default private 4 重寫方法一定...