Java基礎之方法的過載和覆蓋

2021-08-06 06:52:54 字數 945 閱讀 6617

對同乙個類中的多個方法(包括從父類中繼承的方法), 如果有兩個方法的方法名相同,但引數列表不同,那麼可以說,乙個方法是另乙個方法的過載方法。這種現象叫過載。

方法過載特點與返回值型別無關,只看方法名和引數列表

在呼叫時,虛擬機器通過引數列表的不同來區分同名方法

過載必須滿足以下條件:

1) 方法名稱相同。

2) 引數列表不同(引數型別、個數和順序)。

注意: 返回型別可以不相同。

定義:子類中出現了和父類中一樣的方法宣告,也被稱為方法覆蓋。

——使用特點

如果方法名不同,就呼叫對應的方法;

如果方法名相同,最終使用的是子類自己的;

——方法重寫的應用

方法覆蓋只存在於子類和父類(包括直接父類和間接父類)之間。在同乙個類中方法只能被過載,不能被覆蓋,即當子類需要父類的功能,而功能主體子類有自己特有內容時,可以重寫父類中的方法,這樣,即沿襲了父類的功能,又定義了子類特有的內容。

——方法重寫的注意事項

父類中私有方法不能被重寫;

子類重寫父類方法時,訪問許可權不能更低;

父類靜態方法,子類也必須通過靜態方法進行重寫。

靜態方法:不能覆蓋。

a. 父類的靜態方法不能被子類覆蓋為非靜態方法//編譯出錯

b. 子類可以定義與父類的靜態方法同名的靜態方法(但不是覆蓋)

例如:a類繼承b類 a和b中都乙個相同的靜態方法test

b a = new a();

a.test();//呼叫到的時候b類中的靜態方法test

a a = new a();

a.test();//呼叫到的時候a類中的靜態方法test

可以看出靜態方法的呼叫只和變數宣告的型別相關

這個和非靜態方法的重寫之後的效果完全不同

c. 父類的非靜態方法不能被子類覆蓋為靜態方法;//編譯出錯

私有方法: 不能被子類覆蓋

Java基礎 方法的過載和覆蓋

override可以翻譯為覆蓋,有時也叫重寫,從字面就可以知道,它是覆蓋了乙個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現。overload overloading 對我們來說可能比較熟悉,可以翻譯為過載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入引...

java 方法覆蓋 方法過載和多型

1 方法覆蓋 override 即方法重寫,對父類的方法進行重寫,要求子類和父類的方法名和入參個數和型別必須一致。public class parent public class children extends parent 2 方法過載 overload 乙個類中可以存在多個重名的方法,但是要求...

Java中的方法過載和重寫(覆蓋)

一.方法過載 overload 方法過載的判定 同一類中,方法名相同,引數列表不同 引數個數不同,引數列表中對應位置引數型別不同 其他方法返回值 和訪問修飾符都隨意。public class overloadtest the first situation the number of param t...