999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java中方法的重載與重寫

2019-03-25 07:34:40任憲臻
中國科技縱橫 2019年4期

任憲臻

摘 要:在面向?qū)ο蟮膉ava編程語言中,方法的重載和方法重寫是兩個(gè)非常容易混淆的概念。本文主要針對在進(jìn)行java編程時(shí),對方法重載和方法重寫中容易混淆的概念和用法進(jìn)行闡述,并提供判斷是方法重載還是方法重寫的原則和條件。

關(guān)鍵詞:重寫;重載;面向?qū)ο?/p>

中圖分類號:TP312 文獻(xiàn)標(biāo)識碼:A 文章編號:1671-2064(2019)04-0049-02

在Java編程中,方法的重載可以描述為多個(gè)操作具有相同的名字,但是這些操作接收的消息類型必須不一樣,通過方法重載,可以利用同一個(gè)操作名稱,傳遞不同的消息,對象根據(jù)相應(yīng)的消息執(zhí)行不同的操作,方法的重寫一般發(fā)生在同一個(gè)類的內(nèi)部。而方法的重寫則是指不同類型的對象調(diào)用同一個(gè)操作時(shí)可能產(chǎn)生不同的行為,方法的重寫主要發(fā)生在Java繼承關(guān)系中,主要是指子類根據(jù)需要重寫父類的某個(gè)方法,這樣子類可以產(chǎn)生自己獨(dú)特的功能行為。

1 重載(overload)

所謂方法的重載,是指在java類中可以定義多個(gè)具有相同名字的方法,但是這些相同名字的方法的參數(shù)必須不一樣。具有不同參數(shù)的同名方法就是方法的重載,方法參數(shù)的不同可以是不同的參數(shù)個(gè)數(shù),也可以是參數(shù)個(gè)數(shù)相同,但是參數(shù)列表中某個(gè)參數(shù)的類型不同或參數(shù)順序不一致。

在圖1所示的方法重載的例子中,兩個(gè)方法的名稱都是prt,但是兩個(gè)prt方法的參數(shù)類型不同,第一個(gè)prt方法中的兩個(gè)參數(shù)都是int類型,而第二個(gè)prt方法中的兩個(gè)參數(shù)都是String類型,所以在使用對象ol調(diào)用方法prt時(shí),根據(jù)方法傳遞的實(shí)參的類型不一樣,輸出的結(jié)果也不一樣。

需要注意的是,在方法的重載中,方法的返回類型不作為判斷方法重載的條件。如下圖2所示,兩個(gè)方法的名字相同(都是compute),方法中參數(shù)的類型不同(int 和double),雖然方法的返回值類型不同(一個(gè)返回int,一個(gè)無返回值),但是這種情況也是方法的重載。

在java中使用方法的重載時(shí),在保證方法的參數(shù)不同的基礎(chǔ)上,也一定要避免重載方法調(diào)用時(shí)可能出現(xiàn)的歧義。如圖3所示的代碼,當(dāng)執(zhí)行語句ol.prt(3, 20)時(shí),Java編譯器不知道應(yīng)該去調(diào)用重載方法中的哪一個(gè),所以會導(dǎo)致重載方法的歧義調(diào)用,就會導(dǎo)致無法通過編譯。

2 重寫(override)

方法的重寫也稱覆蓋,是指在java類的繼承關(guān)系中,子類重寫從父類中繼承過來的方法,使得這個(gè)方法更符合子類的特性。當(dāng)子類重寫父類的方法時(shí),要求該方法的名字、參數(shù)類型、參數(shù)個(gè)數(shù)必須和父類的完全相同,而且要求該方法的返回值類型必須和父類的返回值類型一致或者是父類返回值類型的子類型。

子類通過重寫從父類繼承過來的方法,可以把父類的狀態(tài)和行為改變?yōu)樽宇愖陨淼臓顟B(tài)和行為。子類重寫父類的方法后,那么從父類繼承過來的這個(gè)方法就會被隱藏起來,當(dāng)子類對象調(diào)用這個(gè)方法時(shí),調(diào)用的一定是子類重寫后的方法。圖4所示,當(dāng)執(zhí)行語句demo.prt()時(shí),調(diào)用的是子類重寫的從父類繼承過來prt方法,所以程序輸出的結(jié)果是“Son class”,而不是說“Father class”

在子類重寫的方法中,可以訪問從父類繼承過來的成員變量,也可以調(diào)用從父類繼承的方法,也可以操作子類中定義的新成員變量和新方法,但是如果想要訪問因?yàn)樽宇愔貙懚浑[藏的成員變量或者方法,必須通過super來進(jìn)行調(diào)用。如下圖5改寫的圖4中所示的Son類后,輸出結(jié)果如下所示。當(dāng)執(zhí)行語句demo.prt()時(shí),調(diào)用的是子類重寫的prt方法,但是在這個(gè)重寫的prt方法中,通過語句super.prt(),則可以調(diào)用被子類重寫的prt方法隱藏的父類的prt方法。(但是需要注意一點(diǎn),如果父類中方法的修飾符是private,那么這個(gè)方法在子類中通過super也是不能訪問的。)

在重寫父類的方法時(shí),還必須注意子類重寫的方法的訪問權(quán)限不能低于父類方法的訪問權(quán)限(訪問控制修飾符的訪問權(quán)限由低到高的順序是:private、默認(rèn)友好的、protected、public)。在圖6中,父類prt方法的訪問控制修飾符是protected,如果子類在重寫此方法時(shí)使用默認(rèn)友好的訪問權(quán)限(無修飾控制符),則代碼無法通過編譯,這是因?yàn)槟J(rèn)友好的訪問權(quán)限級別低于protected,所以代碼編譯失敗。

子類重寫父類方法是Java面向?qū)ο缶幊虒?shí)現(xiàn)多態(tài)的一個(gè)重要環(huán)節(jié),因?yàn)楦割惖姆椒梢员凰亩鄠€(gè)子類重新改寫,所以這些子類都可以具有自己的行為特性,那么根據(jù)這個(gè)特性,我們可以用一個(gè)父類的對象變量引用指向子類創(chuàng)建的對象,當(dāng)這個(gè)對象在調(diào)用方法時(shí)就會具有多種形態(tài),因?yàn)椴煌淖宇愒谥貙懜割惙椒〞r(shí)都會生成不同的行為。

綜上所述,方法的重載發(fā)生在同一個(gè)類的內(nèi)部,通過多個(gè)相同的方法名稱、但是參數(shù)不同(可以是參數(shù)個(gè)數(shù)、參數(shù)類型、參數(shù)順序不同)的多個(gè)方法,實(shí)現(xiàn)同一類型的功能。方法的重載和方法的返回值類型無關(guān),和方法的訪問控制修飾符也無關(guān)。而方法的重寫則發(fā)生在不同的類之間,是子類重寫父類的方法。通過方法重寫,可以使子類具備不同的行為特性。方法重寫的前提是繼承關(guān)系的存在,是子類重寫從父類繼承過來的方法。在實(shí)際的Java編程應(yīng)用中,我們應(yīng)該根據(jù)具體的情況,選擇應(yīng)用方法的重載或者重寫來實(shí)現(xiàn)程序的功能。

參考文獻(xiàn)

[1] [美]凱 S.霍斯特曼(Cay S.Horstmann).Java核心技術(shù) 卷I:基礎(chǔ)知識(原書第10版)[M].機(jī)械工業(yè)出版社,2016.

[2] [美]Bruce Eckel.陳昊鵬,譯.Java編程思想(第4版)[M].機(jī)械工業(yè)出版社,2007.

[3] 耿祥義,張躍平.Java2實(shí)用教程(第5版)[M].清華大學(xué)出版社,2018.

主站蜘蛛池模板: 亚洲视频在线青青| 日韩AV无码免费一二三区| 99精品热视频这里只有精品7 | 色婷婷狠狠干| 婷婷亚洲最大| 欧美69视频在线| 亚洲大尺度在线| 一级毛片在线播放免费| 高清不卡一区二区三区香蕉| 免费啪啪网址| 被公侵犯人妻少妇一区二区三区| 亚洲一区二区三区国产精品| 亚洲无码高清免费视频亚洲| 日本三级精品| 亚洲成网777777国产精品| 亚洲国产天堂久久综合| 色婷婷亚洲综合五月| 四虎永久在线视频| 一级毛片在线直接观看| 亚洲视频免| 香蕉99国内自产自拍视频| 伊人久久婷婷五月综合97色| 亚洲天堂网视频| 久久综合婷婷| 色天天综合久久久久综合片| 成AV人片一区二区三区久久| 婷婷激情五月网| 一本大道无码高清| 国产麻豆91网在线看| 国产迷奸在线看| 毛片网站观看| 无码日韩人妻精品久久蜜桃| 天天综合色网| 国产SUV精品一区二区6| 暴力调教一区二区三区| 青青草原国产一区二区| 免费午夜无码18禁无码影院| 欧美国产日韩在线播放| 色亚洲激情综合精品无码视频 | 毛片最新网址| 国产日韩欧美中文| 国产第一页屁屁影院| 亚洲AⅤ波多系列中文字幕| 农村乱人伦一区二区| 国产在线日本| 成人福利视频网| 亚洲Av综合日韩精品久久久| 欧美啪啪一区| 97视频精品全国免费观看| 国产激爽大片在线播放| 国产日韩AV高潮在线| 久久精品女人天堂aaa| 91色老久久精品偷偷蜜臀| 日韩国产另类| 国产成人福利在线| 91免费观看视频| 九九久久精品免费观看| 欧美日韩在线第一页| 亚洲综合色区在线播放2019| 午夜日b视频| 日本日韩欧美| 国内精品视频| 88国产经典欧美一区二区三区| 国产精品99一区不卡| 中文字幕1区2区| 亚洲精品亚洲人成在线| 欧美高清日韩| 无码av免费不卡在线观看| 国产成人1024精品| 久久精品只有这里有| 777国产精品永久免费观看| 亚洲日本在线免费观看| 亚洲成a人片77777在线播放 | 婷婷六月综合| 一区二区三区四区日韩| 久久久久88色偷偷| 亚洲精品国产成人7777| 91精品视频播放| 真人免费一级毛片一区二区| 中文字幕无码av专区久久| 久久91精品牛牛| 国产精品2|