精品欧美无遮挡一区二区三区在线观看,中文字幕一区二区日韩欧美,久久久久国色αv免费观看,亚洲熟女乱综合一区二区三区

        ? 首頁 ? 理論教育 ?方法的覆蓋

        方法的覆蓋

        時(shí)間:2023-02-28 理論教育 版權(quán)反饋
        【摘要】:當(dāng)出現(xiàn)方法覆蓋時(shí),如果要在子類中訪問直接超類中被覆蓋的方法,可以使用包含關(guān)鍵字super的方法訪問表達(dá)式,即:例如,在本例中,在Cylinder子類中,通過super.getArea()引用Circle直接超類中被覆蓋的方法。這是因?yàn)楦采w方法的訪問級(jí)別低于被覆蓋方法的訪問級(jí)別。

        5.2.3 方法的覆蓋

        在一個(gè)子類繼承直接超類(或父類)時(shí),如果直接超類的某個(gè)成員方法對(duì)于子類而言是不合適的,那該怎么辦呢?我們可以在子類中定義一個(gè)方法,該方法與直接超類中的成員方法原型相同,即方法的返回類型、方法名、參數(shù)完全一致,從而進(jìn)行方法覆蓋。

        在子類中定義了一個(gè)實(shí)例方法,該方法與直接超類中的某個(gè)實(shí)例方法具有相同的方法名、返回類型和完全一致的參數(shù),從而使直接超類中的那個(gè)方法不能被子類直接引用,這稱為方法覆蓋。

        一個(gè)正確的方法覆蓋需要滿足以下要求:

        (1)覆蓋方法與被覆蓋方法的返回類型、方法名、參數(shù)要完全一致;

        (2)覆蓋方法的訪問級(jí)別不能低于被覆蓋方法的訪問級(jí)別;

        (3)覆蓋方法不能比被覆蓋方法拋出更多的受檢查異常(checked Exception)。

        【例5-4】 在例5-1中,在圓類和直接超類圓柱體類中增加同名方法,實(shí)現(xiàn)方法覆蓋。

        img282

        程序運(yùn)行結(jié)果:

        img283

        img284

        分析與思考:(1)方法double getArea()在Circle直接超類和Cylinder子類中,具有相同的方法名、返回類型和完全一致的參數(shù),所以是方法覆蓋。

        (2)當(dāng)出現(xiàn)方法覆蓋時(shí),如果要在子類中訪問直接超類中被覆蓋的方法,可以使用包含關(guān)鍵字super的方法訪問表達(dá)式,即:

        super.方法名([實(shí)參表])

        例如,在本例中,在Cylinder子類中,通過super.getArea()引用Circle直接超類中被覆蓋的方法。

        (3)變量隱藏和方法覆蓋的意義:在不改變變量名和方法名的基礎(chǔ)上,即對(duì)外統(tǒng)一名字和接口,通過變量隱藏和方法覆蓋可以把父類的狀態(tài)和行為改變成自身的狀態(tài)和行為,又不失其繼承性。例如,Cylinder子類中的name變量和getArea()方法,沒有改變父類的變量名和方法名,即對(duì)外統(tǒng)一以引用變量.name和引用變量.getArea()形式引用,通過變量隱藏和方法覆蓋可以把父類的狀態(tài)(name=“circle”)和行為(計(jì)算圓的面積)改變成Cylinder子類自身的狀態(tài)(name=“cylinder”)和行為(計(jì)算圓柱體的表面積),同時(shí)又繼承了父類其他非私有成員。

        (4)o=obj語句執(zhí)行后,引用變量o的值指向Cylinder類的對(duì)象。因此,o.getArea()實(shí)例方法執(zhí)行的是引用變量o所指對(duì)象的計(jì)算圓柱體表面積。

        (5)Cylinder子類中g(shù)etArea()方法的訪問權(quán)限從public改為其他修飾符,會(huì)出現(xiàn)編譯錯(cuò)誤。這是因?yàn)楦采w方法的訪問級(jí)別低于被覆蓋方法的訪問級(jí)別。

        模仿例5-4:長(zhǎng)方體類是矩形類的子類,并在這兩個(gè)類中增加同名方法,實(shí)現(xiàn)方法覆蓋。

        免責(zé)聲明:以上內(nèi)容源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。

        我要反饋