新聞中心
本篇內(nèi)容主要講解“java重載與重寫的區(qū)別有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“java重載與重寫的區(qū)別有哪些”吧!
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比鹽津網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式鹽津網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋鹽津地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
區(qū)別:1、重載實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性,而重寫實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)性。2、重載發(fā)生在一個(gè)類中,同名的方法的參數(shù)列表要不同;而重寫發(fā)生在子類與父類之間,重寫方法的重寫方法要相同。3、重載方法的返回類型可以修改,而重寫方法不能。4、重載方法的異常可以修改,重寫方法的異??梢詼p少或刪除,一定不能拋出新的或者更廣的異常。5、重載方法的訪問可以修改,而重寫方法的訪問一定不能做更嚴(yán)格的限制。
重寫(Override)
從字面上看,重寫就是 重新寫一遍的意思。其實(shí)就是在子類中把父類本身有的方法重新寫一遍。子類繼承了父類原有的方法,但有時(shí)子類并不想原封不動(dòng)的繼承父類中的某個(gè)方法,所以在方法名,參數(shù)列表,返回類型(除過子類中方法的返回值是父類中方法返回值的子類時(shí))都相同的情況下,對(duì)方法體進(jìn)行修改或重寫,這就是重寫。但要注意子類函數(shù)的訪問修飾權(quán)限不能少于父類的。
例如:
public class Father {
public static void main(String[] args) {
// TODO Auto-generated method stub
Son s = new Son();
s.sayHello();
}
public void sayHello() {
System.out.println("Hello");
}
}
class Son extends Father{
@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println("hello by ");
}
}
重寫 總結(jié):
1.發(fā)生在父類與子類之間
2.方法名,參數(shù)列表,返回類型(除過子類中方法的返回類型是父類中返回類型的子類)必須相同
3.訪問修飾符的限制一定要大于被重寫方法的訪問修飾符(public>protected>default>private)
4.重寫方法一定不能拋出新的檢查異?;蛘弑缺恢貙懛椒ㄉ昝鞲訉挿旱臋z查型異常
重載(Overload)
在一個(gè)類中,同名的方法如果有不同的參數(shù)列表(參數(shù)類型不同、參數(shù)個(gè)數(shù)不同甚至是參數(shù)順序不同)則視為重載。同時(shí),重載對(duì)返回類型沒有要求,可以相同也可以不同,但不能通過返回類型是否相同來判斷重載。
例如:
public class Father {
public static void main(String[] args) {
// TODO Auto-generated method stub
Father s = new Father();
s.sayHello();
s.sayHello("wintershii");
}
public void sayHello() {
System.out.println("Hello");
}
public void sayHello(String name) {
System.out.println("Hello" + " " + name);
}
}
重載 總結(jié):
1.重載Overload是一個(gè)類中多態(tài)性的一種表現(xiàn)
2.重載要求同名方法的參數(shù)列表不同(參數(shù)類型,參數(shù)個(gè)數(shù)甚至是參數(shù)順序)
3.重載的時(shí)候,返回值類型可以相同也可以不相同。無法以返回型別作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)
面試時(shí),問:重載(Overload)和重寫(Override)的區(qū)別?
答:方法的重載和重寫都是實(shí)現(xiàn)多態(tài)的方式,區(qū)別在于前者實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性,而后者實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)性。
重載發(fā)生在一個(gè)類中,同名的方法如果有不同的參數(shù)列表(參數(shù)類型不同、參數(shù)個(gè)數(shù)不同或者二者都不同)則視為重載;重寫發(fā)生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的參數(shù)列表,有兼容的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常(里氏代換原則)。
重載對(duì)返回類型沒有特殊的要求,不能根據(jù)返回類型進(jìn)行區(qū)分。
區(qū)別點(diǎn) | 重載方法 | 重寫方法 |
---|---|---|
參數(shù)列表 | 必須修改 | 一定不能修改 |
返回類型 | 可以修改 | 一定不能修改 |
異常 | 可以修改 | 可以減少或刪除,一定不能拋出新的或者更廣的異常 |
訪問 | 可以修改 | 一定不能做更嚴(yán)格的限制(可以降低限制) |
到此,相信大家對(duì)“java重載與重寫的區(qū)別有哪些”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
本文題目:java重載與重寫的區(qū)別有哪些
本文來源:http://www.dlmjj.cn/article/pcjidh.html