重載和覆蓋之間的區別 | 重載與覆蓋

已發表: 2021-06-15

目錄

介紹

面向對象編程在軟件開發領域發揮著重要作用。 有幾個概念與這種類型的編程相關聯,例如類、對象、多態性、繼承、數據抽象、通用編程和異常處理。

開發人員總是發現多態性的概念非常有趣,它具有方法重載、方法覆蓋等子概念。但是,要更好地理解多態性的概念,必須了解重載和覆蓋之間的區別

方法重載和方法覆蓋之間的區別

方法重載和方法覆蓋之間存在很多差異 java中方法重載和覆蓋之間的區別列表如下:

方法重載方法覆蓋
1 該方法用於增加程序的可讀性。 該方法用於提供超類提供的方法的實現。
2 它在一個班級內進行發生在具有 IS-A(繼承)關係的兩個類中。 覆蓋需要基類和子類。
3 方法或函數必須具有相同的名稱和不同的簽名。 方法或函數必須具有相同的名稱和相同的簽名。
4 該方法中使用的參數應該不同。 在方法覆蓋的情況下應該使用相同的參數。
5 它是編譯時多態性的一個例子。 重載方法調用與其定義的綁定發生在編譯時。 這是運行時多態性的一個例子。 重寫方法調用與其定義的綁定發生在運行時。
6 僅通過更改返回類型,無法進行方法重載。 返回類型可能不同也可能相同。 但是,參數應該不同。 方法覆蓋中的返回類型可能相同或協變。
7 方法重載可能應用於靜態方法。 這意味著一個類可以有多個同名的靜態方法。 方法覆蓋不能應用於靜態方法。
8 靜態綁定被用於方法重載。 動態綁定被用於方法覆蓋。
9 方法重載可以提供更好的性能。 與方法重載相比,性能較差。 原因是重寫方法的綁定是在運行時完成的。
10 私有和最終方法可以重載。 一個類可以有多個同名的私有/最終方法。 私有和最終方法不能被覆蓋。 子類不能覆蓋其基類的私有/最終方法。
11 在方法重載的情況下可能需要也可能不需要繼承。 在方法覆蓋的情況下總是需要繼承。
12 它用於為方法的行為添加更多內容。 它用於更改現有方法的行為。
13 在方法重載中不需要存在多個類。 在方法覆蓋中總是需要至少兩個類。
14 如果重載中斷,就會出現編譯時錯誤,並且很容易修復。 如果覆蓋中斷,它可能會在我們的程序中導致嚴重的問題,因為效果將在運行時可見。
15 方法重載必須具有不同的簽名。 方法覆蓋必須具有相同的簽名。
16 重載方法中的訪問修飾符可以是任何東西,也可以是不同的。 子類方法的訪問修飾符必須與覆蓋方法中的超類方法訪問修飾符相同或更高。
17 拋出的異常可以是方法重載概念中的任何東西。 在方法覆蓋中,拋出的未經檢查的異常可以是任何東西。 對於檢查的異常,重寫方法不應拋出任何新的或比重寫方法聲明的異常更廣泛的異常。
18 編譯器總是根據引用類型來處理方法解析。 JVM 負責基於運行時對象的方法解析。

從世界頂級大學在線學習軟件課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

接下來是什麼?

如果您有興趣了解有關全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為在職專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。

什麼是運行時多態性?

運行時多態是一種涉及動態類型的多態。 這意味著對象可以像單一類型一樣被操作。 這類似於靜態多態性,其中對象的操作就像它們具有單一類型一樣,而不管它們的底層類型如何。 它是五個主要的軟件設計原則之一。 它與面向對象的編程一起使用。 這意味著變量可以根據運行時條件引用不同的對象。 例如,一個變量可能在聲明變量時用於引用Dog對象,但在程序執行期間,該變量可能引用Cat對象。 它是一種自動類型轉換。 例如,如果你有一個整數變量 i,你給它賦值一個字符串值,它就會變成一個字符串變量。

重載與重載有何不同?

我們可以覆蓋重載的方法嗎?

重載方法與常規方法相同(就參數的數量和類型而言),但不同之處在於重載方法的編寫方式可以接受與常規方法不同類型的參數。 您可以像覆蓋常規方法一樣覆蓋重載方法。