亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java中方法的重載與重寫

        2019-03-25 07:34:40任憲臻
        中國科技縱橫 2019年4期
        關(guān)鍵詞:面向?qū)ο?/a>

        任憲臻

        摘 要:在面向?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.

        猜你喜歡
        面向?qū)ο?/a>
        面向?qū)ο蠓椒ㄔ谒罾銹LC編程中應(yīng)用分析
        電子制作(2019年7期)2019-04-25 13:18:00
        電子測試(2018年22期)2018-12-19 05:12:28
        面向?qū)ο蟮挠?jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)軟件系統(tǒng)的開發(fā)
        電子測試(2018年15期)2018-09-26 06:01:34
        面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
        面向?qū)ο骔eb開發(fā)編程語言的的評估方法
        基于面向?qū)ο蟮腛ffice評測系統(tǒng)的分析
        峰叢洼地農(nóng)作物面向?qū)ο笮畔⑻崛∫?guī)則集
        遙感信息(2015年3期)2015-12-13 07:26:54
        基于E-cognition的面向?qū)ο蟮母叻直媛蔬b感圖像分類研究
        基于面向?qū)ο蟮能囕v管理軟件的研制與開發(fā)
        面向?qū)ο蟮腟oS體系結(jié)構(gòu)建模方法及應(yīng)用
        日韩午夜理论免费tv影院| 欧美久久久久中文字幕| 国产成年无码久久久久下载| 中文字幕有码久久高清| √天堂资源中文www| 亚洲国产长腿丝袜av天堂| 国产精品18久久久久网站| 伊人狼人影院在线视频| 最新露脸自拍视频在线观看| 国产成人精品一区二区三区视频| 国产亚洲亚洲精品777| 日韩精品一区二区av在线| 亚洲av熟女一区二区三区站| 久久精品国产精品| 亚洲激情成人| 久久九九av久精品日产一区免费 | 草逼动态图视频免费观看网站 | 真人二十三式性视频(动)| 成人午夜免费福利| 日本美女中文字幕第一区| 丰满的人妻hd高清日本| 人人妻人人添人人爽日韩欧美| 日本一区二区三本视频在线观看| 国内嫩模自拍偷拍视频| 色偷偷偷久久伊人大杳蕉| 国产日韩欧美网站| 一区二区三区人妻在线| 欧美xxxxx高潮喷水麻豆| 欧产日产国产精品精品| 亚洲色AV天天天天天天| 久久亚洲春色中文字幕久久| 国产av无码专区亚洲av蜜芽| 香蕉视频毛片| 激情偷拍视频一区二区| 亚洲 日韩 激情 无码 中出| 国产自国产在线观看免费观看| 久久亚洲精彩无码天堂| 风韵人妻丰满熟妇老熟女视频| 孕妇特级毛片ww无码内射| 国产一区二区三区啪| 精品国产一区二区三区av新片|