1. 程式人生 > >【Java】方法過載和方法重寫的區別

【Java】方法過載和方法重寫的區別

方法過載和方法重寫在英文中分別是overload和override,很多人在學習Java的過程中總是分不清重寫和過載這兩個方法,實際上,這兩個方法還是有很大的差別的,過載和重寫這兩個方法雖然名字有些類似,但他們之間有很少的聯絡,除了二者都是發生在方法之間,並要求方法名相同之外,沒有太大的相似之處。過載主要發生在同一個類的多個重名方法之間,重寫則發生在子類和父類同名方法之間,當然父類方法和子類方法之間也可以發生過載,因為子類會獲得父類的方法,如果子類定義了一個與父類方法有相同的方法名,但引數列表不同的方法,就會形成父類方法和子類方法的過載。
方法過載要遵循的原則:兩同一不同
(1)兩同:同一個類中的方法名相同
(2)一不同:引數列表(個數或型別)不同
至於方法中的其他部分,如方法返回值型別、修飾符等,與方法過載沒有任何關係。

方法重寫要遵循的原則:兩同兩小一大
(1)兩同:方法名相同、形參列表相同
(2)兩小:子類方法返回值型別應比父類方法返回值型別更小或相等,子類方法宣告丟擲的異常類應比父類方法宣告丟擲的異常類更小或相等
(3)一大:是子類方法的訪問許可權應比父類方法的訪問許可權更大或相等

相關推薦

資料結構JavaB樹B+樹區別

B樹和B+樹    1. B樹的定義:    1970年,R.Bayer和E.mccreight提出了一種適用於外查詢的樹,它是一種平衡的多叉樹,稱為B樹,其定義如下:    一棵m階的B樹滿足下列條件:    ⑴ 樹中每個結點至多有m個孩子;    ⑵ 除根結點和葉子結點

Java方法過載方法重寫區別

方法過載和方法重寫在英文中分別是overload和override,很多人在學習Java的過程中總是分不清重寫和過載這兩個方法,實際上,這兩個方法還是有很大的差別的,過載和重寫這兩個方法雖然名字有些類似,但他們之間有很少的聯絡,除了二者都是發生在方法之間,並要求

java方法過載方法重寫分析

      方法重寫又稱方法覆蓋。 (2)若子類中的方法與父類中的某一方法具有相同的方法名、返回型別和引數表,則新方法將覆蓋原有的方法。 如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。 (3)子類函式的訪問修飾許可權不能少於父類的; 下面是重寫的例子: class Person//

JavaCollections中sort方法Comparator的重寫

很多人只會用Collections中不帶比較器Comparator的sort方法完成一些對儲存整形Integer的動態陣列ArrayList的簡單排序,包括我之前,此前僅僅在《【Java】Java中的Collections類——Java中升級版的資料結構》(點選開啟連結)介

JAVAArrays.asListList的add方法一起使用報錯

使用例子:import java.util.Arrays; import java.util.List;public class test { public static void main(

Java加載驅動方法

set jdbc mysql manage setprop serve ros body java 1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 2. DriverManager.re

方法過載方法重寫

方法過載:(Overload) 方法過載發生在類中的幾個方法上,每個過載方法的引數型別或引數的數量必須是不同的。雖然每個過載方法可以有不同的返回型別,但返回型別並不足以區分使用的是哪個方法。demo: public void show(int i){...} public int sho

C#靜態變數方法該如何使用?

什麼是靜態變數? 簡單的來說就是:用static修飾的變數,它屬於它所在的類所有,而不是具體的某一個物件。 靜態變數也被稱為全域性變數,就是它在程式執行的時候就被初始化,如果你在它初始化或使用的時候,沒有給它賦值,系統就會給它一個預設值。   靜態方法同理,簡單瞭解一下

Javalombok 列舉 tostring()方法 Bug

今天發現一個詭異的問題,一個列舉類使用lombok加上tostring註解以後,列舉tostring方法返回是異常的。 @ToString public enum WORD { A,B,C }

面向物件簡答題:方法過載方法重寫(覆蓋)的區別?

方法過載和方法重寫(覆蓋)的區別? 答: (1)相同點: ①方法名稱相同。 ②都屬於多型機制。 (2)不同點:位置、引數列表、許可權修飾符、返回值型別、丟擲異常不同。 過載(overload):發生在同一個類中,方法名相同,引數列表不

Java StackTraceElement的getLineNumber方法返回-1問題

  WEB工程在eclipse編譯釋出到tomcat後,執行正常,日誌列印時也可以通過StackTraceElement的StackTraceElement獲得行號。   但是通過ant指令碼打出來的包,執行時,日誌打出的行號全部為-1,定位了下,發現問題如下:    

Java執行緒join方法

join是java多執行緒的裡的方法。它的作用是什麼? java中的任意程式碼段,都可能會被任意的執行緒執行。程式碼段中可以是任意的程式碼,比如,啟動了一個執行緒。如果是這種情況,就可以用join方法了。 假設當前程式碼段A啟動了執行緒t,執行當前的程式碼的執行緒假定為a,

方法過載方法重寫區別

方法過載:一個類中有一個方法A,你又在這個類中建立了一個方法B,方法B的名字和A一樣,返回值型別也一樣,但是引數的型別或個數不同,此時B過載了A。 例如: public class TestClass{ public int test(int i){return 1;} public int test(fl

方法過載方法覆蓋及其異同(Java

方法過載(Overload) Java的方法過載,就是在類中可以建立多個方法,它們可以有相同的名字,但必須具有不同的引數,即或者是引數的個數不同,或者是引數的型別不同,又或者是引數的順序不同。呼叫方法時通過傳遞給它們的不同的引數列表來決定具體使用哪個方法。

Java方法過載方法的呼叫

方法過載 · 同一個類中兩個或以上的方法可以有同一個名字,只要引數宣告不同即可 方法的引數型別相同,個數不同; 方法的引數個數相同,型別不同; 過載只跟方法的引數型別和個數相關,跟返回值無關;

Java方法過載方法覆蓋的區別

方法過載和方法覆蓋的區別: 方法過載:Overload 方法覆蓋:Override兩者本身一點關係都沒有,僅僅只是因為名字很像。方法過載:Overload 作用:解決了同一個類中,相同的功能方法名不同

Java之static靜態方法與非static靜態方法區別

span get nbsp ati pub public ring spa 靜態方法 1、A.class:沒有static public class A { public String getText(){ } B.class調用A的方法

Java重載(Overload)與重寫(Override)

{} 方法 ide jump exce 上一條 內部 https pre 方法的語法 修飾符 返回值類型 方法名(參數類型 參數名){ ... 方法體 ... return 返回值; } 重載(overload) /** * 重載

javasystem property enviroment property

系統變數(system property)和環境變數(enviroment property)的區別對於java應用開發者而言應該要區分清楚: 1. 概念說明 enviroment property:

JavaMybatis的#{}${}

背景: 曾經一個朋友跟我說面試的時候問:Mybatis的#{}和${}的區別? 備忘: #{} #{}表示一個佔位符號,通過#{}可以實現preparedStatement向佔位符中設定值,自動