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

2022-05-09 21:40:17 字數 6209 閱讀 6407

1樓:來自凌雲山得體的曹仁

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

重寫的方法名,引數數目相同,引數型別相容,過載的方法名相同,引數列表不同。3.重寫的方法修飾符大於等於父類的方法,過載和修飾符無關。

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

2樓:偽墨墨墨墨墨

1、方法名、引數、返回值相同。

2、子類方法不能縮小父類方法的訪問許可權。

3、子類方法不能丟擲比父類方法更多的異常(但子類方法可以不丟擲異常)。

4、存在於父類和子類之間。

5、方法被定義為final不能被重寫。

1、引數型別、個數、順序至少有一個不相同。

2、不能過載只有返回值不同的方法名。

3、存在於父類和子類、同類中。

3樓:

過載(overload),方法名稱必須相同,引數必須不同。 重寫(overload),方法名稱必須相同,引數也要相同。

4樓:臨水撫弦

a()和a(int x)這個叫過載,相同方法名不同引數。a()-->a()叫重寫

5樓:很詭異

粉骨碎身全不怕,要留清白在人間.

6樓:匿名使用者

第三十八回 定三分隆中決策 戰長江孫氏報仇

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

7樓:匿名使用者

1.定義區別:

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

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

2.類的關係區別

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

3.產生方法區別

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

4.引數列表要求區別

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

5.呼叫方法區別

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

擴充套件資料

方法的重寫:

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

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

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

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

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

8樓:匿名使用者

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

如: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.可以丟擲不同的異常;

重寫和過載的區別在於:

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

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

9樓:藏澤雨泰朝

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

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

10樓:商靜雲敬煦

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

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

11樓:

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

12樓:淺秋的古蓮

重寫就是再寫一遍,過載就是再多一個。

重寫:父類裡有,子類再照貓畫虎寫一個。

過載:自己類裡面有,覺得不夠再寫一個。

13樓:

重寫和過載 其實很類似

過載是過載可以直接用的方法

而重寫一般是重寫抽象方法.........

其實在日常中..根本沒去注重這兩個概念的區別...

14樓:匿名使用者

方法寫重就等於覆蓋一樣,簡單的說,方法名和引數都一樣!

過載和重寫有什麼區別?

15樓:xummer_昔年

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

過載:在同一個類中的兩個或兩個以上的方法,擁有相同的方法名,但是引數卻不相同,方法體也不相同。

重寫方法的規則:

1、引數列表必須完全與被重寫的方法相同;

2、返回的型別必須一直與被重寫的方法的返回型別相同;

3、訪問修飾符的限制一定要大於被重寫方法的訪問修飾符;

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

過載的規則:

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

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

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

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

16樓:富察英奕

過載: 發生在同一個類中,方法名必須相同,引數型別不同、個數不同、順序不同,方法返回值和訪問修飾符可以不同,發生在編譯時。

重寫: 發生在父子類中,方法名、引數列表必須相同,返回值範圍小於等於父類,丟擲的異常範圍小於等於父類,訪問修飾符範圍大於等於父類;如果父類方法訪問修飾符為 private 則子類就不能重寫該方法。

j**a中過載和重寫的區別是什麼?

17樓:尚學堂大資料學院

過載: 發生在同一個類中,方法名必須相同,引數型別不同、個數不同、順序不同,方法返回值和訪問修飾符可以不同,發生在編譯時。

重寫: 發生在父子類中,方法名、引數列表必須相同,返回值範圍小於等於父類,丟擲的異常範圍小於等於父類,訪問修飾符範圍大於等於父類;如果父類方法訪問修飾符為 private 則子類就不能重寫該方法。

18樓:匿名使用者

過載是在同一類內部方法名相同而引數型別、個數、順序等不同,重寫是對繼承而言的,子類重寫父類的方法(擴增新功能)

19樓:匿名使用者

關鍵區別:

過載是針對同一個類裡面 方法名一樣 引數列表(型別和數量)不一樣。

重寫是針對父類與子類之間,子類繼承父類的構造方法但是這個方法子類感覺並不適合自己用,所以就自己重寫這個方法,方法名字什麼都一樣,就是執行體有點區別, 執行的動作更加適和子類。

20樓:匿名使用者

貌似過載的返回型別也可以不同。

方法過載和重寫的區別

21樓:裱叔叔

方法過載:

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

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

重寫與過載的區別在於:

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

擴充套件資料

c語言:

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

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

22樓:女神向善

兩者的區別是條件不同:

過載的條件:

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)可以丟擲不同的異常;

電吉他過載效果器和失真效果器的區別

過載可以看成是輕微的失真,你想買多錢的效果器啊?比較實用的過載建議ts9 失真用boss的 這玩意,你還是自己去琴行試吧。沒有好音箱你不如用綜合呢。電吉他音響和效果器的區別 1 功能的區別 音箱就是個功放的作用,效果器則是給吉他增加其他聲音效果的。2 外觀區別 音箱帶喇叭,效果器則會有很多按鈕,用來...

c中的過載運算子ltlt和gtgt為什麼是只可以為友元函式

如果是過載雙目來操作符 即為類源 的成員函式 就只要設定一個引數作為右側運算量,而左側運算量就是物件本身。而 或 左側運算量是 cin或cout 而不是物件本身,所以不滿足後面一點。就只能申明為友元函式了。如果一定要宣告為成員函式,只能成為如下的形式 ostream operator ostream...

何為超聲波焊接機過載和失頻,不同頻率的超聲波焊接機有什麼區別?

超聲波焊接機工作原理是工作部分機械共振引起瞬間高溫融化焊接元件,使之焊接在一起。過載,本機器的功率是有限的,需要的功率超過了限制,就不能夠焊接,或者焊接質量很差。失頻,剛才提到它是共振工作,如果電路的驅動頻率和其物理固有頻率不接近,不會共振,不能工作。這兩個頻率不同的原因很多 驅動電路頻率不穩定 物...