方法過載和重寫的區別,java 過載和重寫的區別

2022-02-19 11:31:25 字數 5348 閱讀 5413

1樓:裱叔叔

方法過載:

方法過載是指在一個類中定義多個同名的方法,但要求每個方法具有不同的引數的型別或引數的個數。方法過載通常用於建立完成一組任務相似但引數的型別或引數的個數不同的方法。

重寫:在c#中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。

重寫與過載的區別在於:

重寫多型性起作用,對呼叫被過載過的方法可以大大減少**的輸入量,同一個方法名只要往裡面傳遞不同的引數就可以擁有不同的功能或返回值。用好重寫和過載可以設計一個結構清晰而簡潔的類,可以說重寫和過載在編寫**過程中的作用非同一般.

擴充套件資料

c語言:

c#旨在設計成為一種「簡單、現代、通用」,以及物件導向的程式設計語言,此種語言的實現,應提供對於以下軟體工程要素的支援:強型別檢查、陣列維度檢查、未初始化的變數引用檢測、自動垃圾收集(garbage collection,指一種自動記憶體釋放技術)。軟體必須做到強大、持久,並具有較強的程式設計生產力。

為使程式設計師容易遷移到這種語言,源**的可移植性十分重要,尤其是對於那些已熟悉c和c++的程式設計師而言。對國際化的支援非常重要。c#適合為獨立和嵌入式的系統編寫程式,從使用複雜作業系統的大型系統到特定應用的小型系統均適用。

2樓:女神向善

兩者的區別是條件不同:

過載的條件:

1.必須在同一個類中

2.方法名必須相同

3.引數列表不能相同。

重寫的條件:

1. 在不同的類中

2. 發生方法重寫的兩個方法返回值,方法名,引數列表必須完全一致

3. 子類丟擲的異常不能超過父類相應的方法丟擲的異常

4. 子類方法的訪問級別不能低於父類相應方法的訪問級別(public,package,protected, private)

5.方法體不同  super()呼叫父類構造,super.只能呼叫父類的例項方法 this()呼叫該類的其他構造方法,this.

呼叫類的屬性,方法 如果父類有有參構造,子類必須定義構造方法。

擴充套件資料:

1、重寫方法的規則:

(1) 引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過載。

(2)返回的型別必須一直與被重寫的方法的返回型別相同,否則不能稱其為重寫而是過載。

(3)訪問修飾符的限制一定要大於被重寫方法的訪問修飾符。(public>protected>default>private)

(4)重寫方法一定不能丟擲新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。

例如, 父類的一個方法申明瞭一個檢查異常ioexception,在重寫這個方法是就不能丟擲exception,只能丟擲ioexception的子類異常,可以丟擲非檢查異常.

2、過載方法的規則:

(1)必須具有不同的引數列表;

(2)可以有不同的返回型別,只要引數列表不同就可以了;

(3)可以有不同的訪問修飾符;

(4)可以丟擲不同的異常;

3樓:卓逸智慧錦囊團

過載:過載字面意思多次的意思,也就是同一個方法實現多個不同的邏輯,並可以在同一個類中可以實現。其實現的原理是,方法名相同,引數的個數或者型別不同即可。

重寫:重寫就是要重新去寫(實現),一個類中不可能兩個定義一樣的方法。因此,重寫就是子類對父類定義的方法重新實現一次。

擴充套件資料

一、方法過載的具體規範:

1、必須具有不同的引數列表;

2、可以有不同的返回型別,只要引數列表不同就可以了;

3、可以有不同的訪問修飾符;

4、可以丟擲不同的異常。

二、方法重寫的具體規範:

1、引數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是過載;

2、返回的型別必須一直與被重寫的方法的返回型別相同,否則不能稱其為重寫而是過載;

3、訪問修飾符的限制一定要大於被重寫方法的訪問修飾符號、(public>protected>default>private);

4、重寫方法一定不能丟擲新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。

4樓:靠名真tm難起

1.重寫方法名、引數、返回值相同;過載引數型別、個數、順序至少有一個不相同。

2.重寫存在於父類和子類之間;過載存在於父類和子類、同類中。

2.重寫發生在一個類中;過載發生在繼承類中。

4.被重寫的方法不能擁有更嚴格的許可權;過載對許可權沒有要求。

5樓:文件類共創空間

1.重寫必須繼承,過載不用。

2.重寫的方法名,引數數目相同,引數型別相容,過載的方法名相同,引數列表不同。

3.重寫的方法修飾符大於等於父類的方法,過載和修飾符無關。

4.重寫不可以丟擲父類沒有丟擲的一般異常,可以丟擲執行時異常

6樓:匿名使用者

1、過載:

方法名相同,引數列表不同

2、重寫:

也叫覆蓋,指在子類中定義一個與父類中方法同名同引數列表的方法。因為子類會繼承父類的方法,而重寫就是將從父類繼承過來的方法重新定義一次,重新填寫方法中的**。

7樓:匿名使用者

重寫是子類的方法覆蓋父類的方法,要求方法名和引數都相同

過載是在同一個類中的兩個或兩個以上的方法,擁有相同的方法名,但是引數卻不相同,方法體也不相同,最常見的過載的例子就是類的建構函式,可以參考api幫助文件看看類的構造方法

8樓:匿名使用者

根本區別:

重寫(重構)很直觀啊,子類覆蓋了父類的同名同參同返回值的方法,用子類呼叫的只會是重寫的方法

過載,同名而已。

9樓:d調的華麗白羊

對對對古古怪怪田剛回家

j**a 過載和重寫的區別

10樓:匿名使用者

1.定義區別:

①過載是指不同的函式使用相同的函式名,但是函式的引數個數或型別不同。呼叫的時候根據函式的引數來區別不同的函式。

②覆蓋(也叫重寫)是指在派生類中重新對基類中的虛擬函式(注意是虛擬函式)重新實現。即函式名和引數都一樣,只是函式的實現體不一樣。

2.類的關係區別

覆蓋是子類和父類之間的關係,是垂直關係;過載是同一個類中方法之間的關係,是水平關係。

3.產生方法區別

覆蓋只能由一個方法或只能由一對方法產生關係;過載是多個方法之間的關係。

4.引數列表要求區別

覆蓋要求引數列表相同;過載要求引數列表不同。

5.呼叫方法區別

覆蓋關係中,呼叫方法體是根據物件的型別來決定;而過載關係是根據呼叫時的實參表與形參表來選擇方法體的。

擴充套件資料

方法的重寫:

1、在子類中可以根據需要對從基類中繼承來的方法進行重寫。

2、重寫的方法和被重寫的方法必須具有相同方法名稱、引數列表和返回型別。(注:返回值可以為父類中返回值的子型別.引數若為子類,則不是重寫是過載)

3、重寫方法不能使用比被重寫的方法更嚴格的訪問許可權。

4. 重寫方法不能宣告丟擲比被重寫方法範圍更大的異常型別。

總結:重寫是子類對所繼承父類相同方法的一種更改,這個更改需要遵循格式按照父類的格式,訪問許可權,丟擲異常等等,都在父類方法控制範圍內,內部具體實現可以實現不同的效果。

11樓:匿名使用者

重寫的主要優點是能夠定義某個子類特有的特徵:

如:public class father

}public class son extends father

}這也叫做多型性,重寫方法只能存在於具有繼承關係中,重寫方法只能重寫父類非私有的方法,

當上例中 father類 speak()方法被private時,son類不能重寫 father類 speak()方法,此時son類 speak()方法相當與在son類中定義的一個speak()方法.

father類 speak()方法一但被final時,無論該方法被public,protected及預設所修飾時,son類根本不能重寫 father類 speak()方法,試圖編譯**時,編譯器會報錯.例:

public class father

}public class son extends father

}//編譯器會報錯.

father類 speak()方法被時預設修飾時,只能在同一包中,被其子類被重些,如果不在同一包則不能重寫.

father類 speak()方法被時protoeted時,不僅在同一包中,被其子類被重些,還可以不同包的子類重寫.

重寫方法的規則:

1.引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過載.

2.返回的型別必須一直與被重寫的方法的返回型別相同,否則不能稱其為重寫而是過載.

3.訪問修飾符的限制一定要大於被重寫方法的訪問修飾符(public>protected>default>private)

4.重寫方法一定不能丟擲新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常.例如,

父類的一個方法申明瞭一個檢查異常ioexception,在重寫這個方法是就不能丟擲exception,只能丟擲ioexception的子類異常,可以丟擲非檢查異常.

而過載的規則:

1.必須具有不同的引數列表;

2.可以有不同的返回型別,只要引數列表不同就可以了;

3.可以有不同的訪問修飾符;

4.可以丟擲不同的異常;

重寫和過載的區別在於:

重寫多型性起作用,對呼叫被過載過的方法可以大大減少**的輸入量,同一個方法名只要往裡面傳遞不同的引數就可以擁有不同的功能或返回值.

用好重寫和過載可以設計一個結構清晰而簡潔的類,可以說重寫和過載在編寫**過程中的作用非同一般.

12樓:藏澤雨泰朝

重寫是子類的方法覆蓋父類的方法,要求方法名和引數都相同

過載是在同一個類中的兩個或兩個以上的方法,擁有相同的方法名,但是引數卻不相同,方法體也不相同,最常見的過載的例子就是類的建構函式,可以參考api幫助文件看看類的構造方法

13樓:商靜雲敬煦

重寫:子類重新把父類有的方法重寫,包括名字,引數和引數個數以及引數型別

好處:沒什麼好處,就是父類實現不了的讓子類來實現過載:是指在同一個類中的幾個同名不同參的方法好處:實現多型技術,一樣的方法根據引數有不一樣的實現

14樓:

過載是多個檔案具有相同的名字,只是引數列表不同無參的a() 有參的a(string str)重寫是就只有這一個方法,每次寫它是對他驚醒一次覆蓋舊的a() 新的 a()

重疾意外和壽險的區別,重疾意外壽險的區別

重疾 意外和壽險屬於三個不同的險種,他們的定義 保障範圍以及保障時間都是不一樣的。他們到底都有什麼區別?學姐做了深度分析,搞不清楚的小夥伴可以收藏起來 重疾險 意外險 壽險有什麼區別?理賠的時候會衝突嗎?重疾險 重疾險主要是保重大疾病的,一旦患上保險合同規定的疾病,保險公司就會按照予以賠付,理賠款可...

重疾險與防癌險的區別,重疾險和防癌險的區別是什麼 ?

一 從兩者的定義及保障範圍可看出二者的區別 1 普通重疾範圍比防癌保險更廣,防癌保險是重大疾病保險的一種 2 防癌保險對癌症的 中所需的醫療費更有針對性,給付多樣化 3 防癌保險的保費一般比普通重大疾病保險便宜。二 防癌險雖然保費便宜但保障範圍也有限,到底哪些人群更適合?相對於重疾險,防癌險的確保障...

簡要評述重農學派和重商學派之間的區別

就是,就是.哪位發財兄太牛了,頂一下.suchen.孫一寧,老師佈置的作業要自己做。簡要評述重農學派和重商學派之間的區別 重農學派的理論特徵,在經濟學說史上的地位 與重商主義進行對比 5 重農學派是第一個經濟學派 重商主義只是一個在當時流行的主張 重農學派的代表人物 是重農學派的創始人和首領。有人曾...