超載(overloading)和在java中重寫(overriding in java)的區別

面向物件程式設計(OOP)是軟體開發中的一個主要正規化。它是一種使用類和物件設計程式的方法。班級就是藍圖。它描述了物件中應該包含的內容。或者應該定義物件的屬性。因此,物件是類的例項。這些物件與其他物件通訊。OOP的一個主要概念是多型性。它是一個物件以多種方式表現的能力。多型性分為過載和重寫兩部分。本文將在Java中討論這兩者之間的區別。Java中過載和重寫之間的關鍵區別在於,過載是使用不同的實現建立多個...

關鍵區別——java中重載與重寫

面向對象編程(OOP)是軟件開發中的一個主要範式。它是一種使用類和對象設計程序的方法。班級就是藍圖。它描述了對象中應該包含的內容。或者應該定義對象的屬性。因此,對象是類的實例。這些對象與其他對象通信。OOP的一個主要概念是多態性。它是一個對象以多種方式表現的能力。多態性分為重載和重寫兩部分。本文將在Java中討論這兩者之間的區別。Java中重載和重寫之間的關鍵區別在於,重載是使用不同的實現創建多個同名方法的能力,重寫是為超類中已經存在的子類方法提供一個實現。

目錄

1. 概述和主要區別
2. Java中的重載是什麼
3. Java中的重寫是什麼
4. Java中重載和重寫的相似性
5. 並排比較——以表格形式在Java中重載與重寫
6. 摘要

什麼是java中的重載(overloading in java)?

重載是使用不同的實現創建同名的多個方法的能力。請參閱下面的Java代碼。

超載(overloading)和在java中重寫(overriding in java)的區別

圖01:Java程序,解釋使用不同數量的參數重載

根據上面的程序,類A包含兩個同名的方法。第一和法有兩個參數。第二和法有三個參數。當創建類型A的對象並調用sum(2,3)時,它將使用兩個參數sum(inta,intb)調用sum方法並返回5。當創建一個類型為A的對象並調用sum(2,3,4)時,它將使用三個參數調用另一個sum方法,即sum(inta,intb,intc)並返回9。

方法名稱相同,但參數數目不同。可以觀察到同一物體的行為不同。這個概念被稱為重載。它也被稱為靜態綁定或編譯時間多態性。

也可以使用不同的數據類型重載。請參閱下面的Java代碼。

超載(overloading)和在java中重寫(overriding in java)的區別

圖02解釋了Java程序重載的不同數量

根據上面的程序,類由兩個同名的方法組成。sum(inta,intb)方法接收兩個整數值。sum(double a double b)接收兩個double值。當創建類型A的對象並調用sum(2,3)時,它將調用sum(inta,intb)並返回值5。當調用sum(3.4,5.6)時,它將調用sum(double a double b)並返回值9.0。在本例中,方法具有相同的名稱,但變量類型不同。這也是超載。

什麼是在java中重寫(overriding in java)?

在Java中,可以使用已經存在的類構建子類。與其從頭創建新類,還可以使用已經存在的類的屬性和方法。現有類是超類,派生類是子類。當子類為已經在超類中的方法提供實現時,它被稱為重寫。請參閱以下Java程序。

超載(overloading)和在java中重寫(overriding in java)的區別

圖03:重寫的Java程序

根據上面的程序,類A有一個display()方法。類B是從類A擴展而來的,因此類B可以訪問類A的屬性和方法。類B具有具有特定實現的方法display()。當創建類型為A的對象並調用display方法時,它將給出輸出B。即使類A有display方法,它也會被類B display方法重寫。子類正在實現超類中已存在的方法。

這個概念是一種多態性,稱為覆蓋。它也被稱為後期綁定、動態綁定、運行時多態性。

超載(overloading)和在java中重寫(overriding in java)的共同點

  • 兩者都是多態性的類型。
  • 在重載和重寫中,方法具有相同的名稱。

超載(overloading)和在java中重寫(overriding in java)的區別

Java中的重載vs
Java中的重載是指使用不同的實現創建同名的多個方法的能力。 Java中的重寫是為超類中已經存在的方法提供子類方法中的特定實現。
參數
在重載中,方法具有相同的名稱,但參數數目不同或參數類型不同。 在重寫中,方法具有相同的名稱,並且參數必須相同。
主題
類中發生重載。 重寫發生在具有繼承關係的兩個類中。
同義詞
重載稱為編譯時間多態性。 重寫稱為運行時多態性。

總結 - 超載(overloading) vs. 在java中重寫(overriding in java)

多態性是面向對象編程中的一個主要概念。它提供了一個對象以多種方式表現的能力。這可以是重載或重寫。重載是編譯時多態性,重寫是運行時多態性。它們在軟件應用程序開發中很有用。重寫和重載之間的區別在於,重載是創建具有不同實現的同名多個方法的能力,重寫是為超類中已經存在的方法在子類方法中提供特定的實現。可以在Java中實現重載和重寫。

下載pdf重載vs java重寫

你可以下載這篇文章的PDF版本,並按照引文說明離線使用。請在此下載PDF版本Java中重載和重寫的區別

引用
  • 發表於 2020-10-19 21:20
  • 閱讀 ( 45 )
  • 分類:科技

你可能感興趣的文章

扔(throw)和丟擲java(throws in java)的區別

...用於異常處理的關鍵字。 扔(throw)和丟擲java(throws in java)的區別 Java中的throw vs throws throw是Java中用來顯式丟擲異常的關鍵字。 throws是Java中用來宣告異常的關鍵字。 多重例外 throw不能有多個異常。 丟擲可能有多個...

  • 發佈於 2020-09-21 19:02
  • 閲讀 ( 54 )

字串緩衝區(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的區別

...區(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的區別 String vs StringBuffer vs StringBuilder 字串 string是一個Java類,用於建立string型別的物件,string是一個字元序列。 字串緩衝區 StringBuffer是一個Java類,用於建立...

  • 發佈於 2020-10-02 19:22
  • 閲讀 ( 45 )

包裹(package)和java介面(interface in java)的區別

...它有助於歸檔抽象。 包裹(package)和java介面(interface in java)的區別 包是一組提供訪問保護和名稱空間管理的相關類。介面是一個類似於類的引用型別,類是抽象方法的集合。包有助於有條理地對類進行分類,以便輕鬆地訪問和維...

  • 發佈於 2020-10-18 11:01
  • 閲讀 ( 51 )

壓倒一切(overriding)和c中的過載#(overloading in c#)的區別

...將全部列印Shape類的顯示方法的內容。 什麼是c中的過載#(overloading in c#)? 在過載中,多個方法具有相同的名稱,但具有不同的引數。引數可以是不同型別的。這些方法也可以有不同數量的引數。方法過載發生在同一個類中。過...

  • 發佈於 2020-10-18 23:50
  • 閲讀 ( 51 )

等於(equals)和java中的hashcode(hashcode in java)的區別

...算子。兩個物件引用只有在指向同一物件時才相等。可以重寫equals方法。 圖01:Java程式與equals 宣告System.out.println(s1.equals(s2))將給出錯誤的答案,因為s1和s2指的是兩個不同的物件。與宣告相似,System.out.println(s1==s2); 宣...

  • 發佈於 2020-10-19 00:40
  • 閲讀 ( 53 )

睡覺(sleep)和在java中等待(wait in java)的區別

...it都是在Java中實現多執行緒時可以使用的方法 睡覺(sleep)和在java中等待(wait in java)的區別 Java中的睡眠與等待 sleep方法使當前執行緒暫停執行指定的毫秒數,這取決於系統計時器和排程程式的精度和準確性。 wait方法...

  • 發佈於 2020-10-19 03:04
  • 閲讀 ( 47 )

打破(break)和在java中繼續(continue in java)的區別

... Java中的break和continue都用於更改迴圈的執行。 打破(break)和在java中繼續(continue in java)的區別 Java中的break vs continue break是一種迴圈控制結構,它使迴圈終止並將程式控制傳遞給迴圈的下一個語句。 continue是一個迴圈控...

  • 發佈於 2020-10-19 05:44
  • 閲讀 ( 63 )

包裝類(wrapper class)和java中的基元型別(primitive type in java)的區別

...類用於此轉換。本文討論了Java中包裝類和基元型別之間的區別。Java中包裝類與基元型別的關鍵區別在於,包裝類用於將原語型別轉換為物件,並將物件轉換回原語型別,而基元型別是由Java程式語言提供的預定義資料型別。 目...

  • 發佈於 2020-10-19 06:27
  • 閲讀 ( 90 )

靜止的(static)和java期末考試(final in java)的區別

...任何物件使用的類成員,而final用於宣告常量變數或無法重寫的方法或無法繼承的類。 目錄 1. 概述和主要區別 2. Java中什麼是靜態的 3. Java中的final是什麼 4. Java中static和final的相似性 5. 並排比較-靜態和最終的Java表格形式 6. 摘要...

  • 發佈於 2020-10-19 07:48
  • 閲讀 ( 54 )

選中的(checked)和java中的未檢查異常(unchecked exception in java)的區別

...ArrayOutOfBound異常。本文討論Java中checked和unchecked異常之間的區別。Java中checked異常和unchecked異常之間的關鍵區別在於編譯器檢查checked異常,而編譯器不檢查checked異常。 目錄 1. 概述和主要區別 2. Java中的檢查異常是什麼 3. 什麼是J...

  • 發佈於 2020-10-19 08:38
  • 閲讀 ( 62 )
gufk62842
gufk62842

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦