重載: 發(fā)生在同一個類中,方法名必須相同,參數(shù)類型不同、個數(shù)不同、順序不同,方法返回值和訪問修飾符可以不同,發(fā)生在編譯時。
創(chuàng)新互聯(lián) - 成都棕樹機房,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽服務(wù)器托管,德陽服務(wù)器托管,遂寧服務(wù)器托管,綿陽服務(wù)器托管,四川云主機,成都云主機,西南云主機,成都棕樹機房,西南服務(wù)器托管,四川/成都大帶寬,機柜大帶寬,四川老牌IDC服務(wù)商
重寫: 發(fā)生在父子類中,方法名、參數(shù)列表必須相同,返回值范圍小于等于父類,拋出的異常范圍小于等于父類,訪問修飾符范圍大于等于父類;如果父類方法訪問修飾符為 private 則子類就不能重寫該方法。
? ? ?
? ? ?
重載(Overloading)和重寫(Overriding)是Java中兩個比較重要的概念。但是對于新手來說也比較容易混淆。下面是我為大家準備的重寫和重載的區(qū)別,希望大家喜歡!
重寫和重載的區(qū)別一:定義
重載
簡單說,就是函數(shù)或者 方法 有同樣的名稱,但是參數(shù)列表不相同的情形,這樣的同名不同參數(shù)的函數(shù)或者方法之間,互相稱之為重載函數(shù)或者方法。
重寫
重寫指的是在Java的子類與父類中有兩個名稱、參數(shù)列表都相同的方法的情況。由于他們具有相同的方法簽名,所以子類中的新方法將覆蓋父類中原有的方法。
重寫和重載的區(qū)別二:相關(guān)知識
關(guān)于重載和重寫,你應(yīng)該知道以下幾點:
1、重載是一個編譯期概念、重寫是一個運行期間概念。
2、重載遵循所謂“編譯期綁定”,即在編譯時根據(jù)參數(shù)變量的類型判斷應(yīng)該調(diào)用哪個方法。
3、重寫遵循所謂“運行期綁定”,即在運行的時候,根據(jù)引用變量所指向的實際對象的類型來調(diào)用方法
4、因為在編譯期已經(jīng)確定調(diào)用哪個方法,所以重載并不是多態(tài)。而重寫是多態(tài)。重載只是一種語言特性,是一種語法規(guī)則,與多態(tài)無關(guān),與面向?qū)ο笠矡o關(guān)。(注:嚴格來說,重載是編譯時多態(tài),即靜態(tài)多態(tài)。但是,Java中提到的多態(tài),在不特別說明的情況下都指動態(tài)多態(tài))
重寫和重載的區(qū)別三:對比
重寫的例子
下面是一個重寫的例子,看完代碼之后不妨猜測一下輸出結(jié)果:
class Dog{
public void bark(){
System.out.println("woof ");
}
}
class Hound extends Dog{
public void sniff(){
System.out.println("sniff ");
}
public void bark(){
System.out.println("bowl");
}
}
public class OverridingTest{
public static void main(String [] args){
Dog dog = new Hound();
dog.bark();
}
}
輸出結(jié)果:
bowl
上面的例子中,dog對象被定義為Dog類型。在編譯期,編譯器會檢查Dog類中是否有可訪問的bark()方法,只要其中包含bark()方法,那么就可以編譯通過。在運行期,Hound對象被new出來,并賦值給dog變量,這時,JVM是明確的知道dog變量指向的其實是Hound對象的引用。所以,當dog調(diào)用bark()方法的時候,就會調(diào)用Hound類中定義的bark()方法。這就是所謂的動態(tài)多態(tài)性。
重寫的條件
參數(shù)列表必須完全與被重寫方法的相同;
返回類型必須完全與被重寫方法的返回類型相同;
訪問級別的限制性一定不能比被重寫方法的強;
訪問級別的限制性可以比被重寫方法的弱;
重寫方法一定不能拋出新的檢查異?;虮缺恢貙懙姆椒暶鞯臋z查異常更廣泛的檢查異常
重寫的方法能夠拋出更少或更有限的異常(也就是說,被重寫的方法聲明了異常,但重寫的方法可以什么也不聲明)
不能重寫被標示為final的方法;
如果不能繼承一個方法,則不能重寫這個方法。
重載的例子
class Dog{
public void bark(){
System.out.println("woof ");
}
//overloading method
public void bark(int num){
for(int i=0; i
System.out.println("woof ");
}
}
上面的代碼中,定義了兩個bark方法,一個是沒有參數(shù)的bark方法,另外一個是包含一個int類型參數(shù)的bark方法。在編譯期,編譯期可以根據(jù)方法簽名(方法名和參數(shù)情況)情況確定哪個方法被調(diào)用。
重載的條件
被重載的方法必須改變參數(shù)列表;
被重載的方法可以改變返回類型;
被重載的方法可以改變訪問修飾符;
被重載的方法可以聲明新的或更廣的檢查異常;
方法能夠在同一個類中或者在一個子類中被重載。
重載和重寫屬于Java面向?qū)ο笾卸鄳B(tài)基礎(chǔ)知識點,下面就給大家說說多態(tài)。
什么叫做多態(tài)?
多態(tài)指的是在繼承關(guān)系中子類繼承父類的行為,這種行為在子類具體實現(xiàn)時可以是不一樣的。比如動物這一父類中有move()方法,在鳥類子類中和魚類子類中move的實現(xiàn)是不一樣的。在Java中多態(tài)是通過重寫(@Override:把父類的方法重新實現(xiàn))和重載(@Overload:通過方法參數(shù)的不同在子類中來重新創(chuàng)建名字相同的方法)來實現(xiàn)的。
重寫:
重寫(Override)是父類與子類之間多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Override)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。
重載:
重載(Overload)是一個類中多態(tài)性的一種表現(xiàn)。如果在一個類中定義了多個同名的方法,它們參數(shù)列表不同,則稱為方法的重載(Overload)。
重載實現(xiàn)的是編譯時的多態(tài)性,重寫實現(xiàn)的是運行時的多態(tài)性。重載發(fā)生在一個類中,同名的方法如果有不同的參數(shù)列表則視為重載;重寫發(fā)生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的參數(shù)列表,有兼容的返回類型。
重寫(又叫覆蓋或復寫)方法名相同,返回值類型相同,參數(shù)列表相同。這里注意沒有規(guī)定修飾符奧。重載對權(quán)限沒有要求;重寫的權(quán)限是:被子類重寫的方法不能擁有比父類更加嚴格的權(quán)限。重載發(fā)生在一個類里,而重寫發(fā)生在繼承類里。構(gòu)造方法可以被重載,但不可以被重寫。
相關(guān)信息
Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進行復雜的編程。
Java具有簡單性、面向?qū)ο蟆⒎植际?、健壯性、安全性、平臺獨立與可移植性、多線程、動態(tài)性等特點。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。
1、概念不同
重寫:重寫也就是我們通常所說的覆蓋,重寫是指在派生類當中,重新對基類中的虛函數(shù)度重新實現(xiàn)。
重載:重載指的是不用的函數(shù)使用相同的函數(shù)名字,可是,函數(shù)的參數(shù)、個數(shù)或者是類型都不同。
2、規(guī)則不同
重載:
重載可以有不同的訪問修飾符。
重載能夠拋出不同的異常。
重載一定要有不同的參數(shù)列表。
重寫:
重寫訪問修飾符的限制一定要大于被重寫方法的訪問修飾符。
重寫的參數(shù)列表一定要完全和被重寫的方法相同,專否則的話不能稱其為重寫而是重載。
重寫返回的類型一定要一直和被重寫的方法的返回類型相同,否則不能稱其為重寫而是重載。
重寫方法一定不可以拋出新的檢查異常或者是比被重寫方法申明更加寬泛的檢查型異常。
3、類的屬關(guān)系不同
重寫:重寫是垂直關(guān)系,是子類和父類之間的關(guān)系。
重載:重載是水平關(guān)系,是同一個類中方法之間的關(guān)系。
1、重載。是指方法的重載,就是在一個類中允許同時存在一個以上的同名方法,只要這些方法的參數(shù)個數(shù)或類型不同即可。
2、重寫。是指子類中將父類成員方法的名稱保留,重寫成員方法的實現(xiàn)內(nèi)容,更改成員方法的存儲權(quán)限,或是修改成員方法的返回值類型。重寫的前提是繼承,只有子類能重寫父類的成員方法。
3、重構(gòu)。子類與父類的成員方法返回值,方法名稱,參數(shù)類型以及個數(shù)完全相同,唯一不同的是方法實現(xiàn)內(nèi)容,這是一種特殊的重寫方
當前題目:go語言重載和重寫的區(qū)別 go語言重載和重寫的區(qū)別是什么
轉(zhuǎn)載來于:http://aaarwkj.com/article18/hhpgdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、品牌網(wǎng)站設(shè)計、網(wǎng)站收錄、自適應(yīng)網(wǎng)站、靜態(tài)網(wǎng)站、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)