Java類的繼承原理與用法分析
本文實例講述了Java類的繼承。分享給大家供大家參考,具體如下:
為什么要繼承?
觀察兩個類的成員組成
提取相同的屬性和方法
寵物是父類,狗和金魚是子類。子類具有父類的屬性和方法。
繼承定義
是使用已存在的類作為基礎(chǔ)建立新類的技術(shù)。
單一繼承:只有一個父類。
父類可以叫做基類、超類。子類可以叫做派生類。
繼承注意事項
子類可以繼承父類中的成員(屬性和方法)。
但是需要注意:
1.private的成員不能繼承
2.子類和父類不在同一個程序包,使用默認(rèn)訪問權(quán)限的成員不能繼承
3.構(gòu)造器不能繼承。
繼承原則
設(shè)計繼承關(guān)系要符合里氏替換原則。is-a關(guān)系
子類是父類,可以完全替換掉父類,代碼沒有任何影響。
里氏替換原則(LSP):在一個軟件系統(tǒng)中,子類對象可以替換所有使用的父類對象,且程序行為沒有變化
重寫
在子類中,子類中的方法名、參數(shù)、返回值和父類中的完全相同,那么叫做子類重寫了父類中的方法。
只有實例成員方法才能重寫。靜態(tài)成員方法、靜態(tài)變量、實例成員變量不能重寫,隱藏。
重寫和隱藏的根本區(qū)別
重寫可以實現(xiàn)多態(tài),隱藏不能實現(xiàn)多態(tài)
重寫注意事項
1.名字必須完全一致
2.參數(shù) 父類擦除后與子類一致;或者與子類完全一致。
3.返回值類型 可以完全一致,如果是引用類型,允許子類的返回值類型是父類的 子類
4.訪問修飾符 子類不能比父類更嚴(yán)格。
5.異常處理 不能比父類范圍更大。
為什么要重寫?
1.子類修改了父類中的功能。
2.子類擴(kuò)展了父類中的功能。
class 父類手機(jī){ public void 來電顯示(){ 顯示電話號; } }
class 子類手機(jī) extends 父類手機(jī){ public void 來電顯示(){ 顯示電話號; 顯示人名; 顯示地址; } }
super
表示父類范圍
super關(guān)鍵和this作用類似,是被屏蔽的成員變量或者成員方法或變?yōu)榭梢?,或者說用來引用被屏蔽的成員變量和成員成員方法。
不過super是用在子類中,目的是訪問直接父類中被屏蔽的成員,注意是直接父類(就是類之上最近的超類)。
super的用法
第一、在子類構(gòu)造方法中要調(diào)用父類的構(gòu)造方法,用“super(參數(shù)列表)”的方式調(diào)用,參數(shù)不是必須的。同時還要注意的一點(diǎn)是:“super(參數(shù)列表)”這條語句只能用在子類構(gòu)造方法體中的第一行。
第二、當(dāng)子類方法中的局部變量或者子類的成員變量與父類成員變量同名時,也就是子類局部變量覆蓋父類成員變量時,用“super.成員變量名”來引用父類成員變量。當(dāng)然,如果父類的成員變量沒有被覆蓋,也可以用“super.成員變量名”來引用父類成員變量,不過這是不必要的。
第三、當(dāng)子類的成員方法覆蓋了父類的成員方法時,也就是子類和父類有完全相同的方法定義(但方法體可以不同),此時,用“super.方法名(參數(shù)列表)”的方式訪問父類的方法。
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
SpringMVC整合SpringSession 實現(xiàn)sessiong
這篇文章主要介紹了SpringMVC整合SpringSession 實現(xiàn)session的實例代碼,本文通過實例相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧2018-04-04Springboot整合MongoDB的Docker開發(fā)教程全解
這篇文章主要介紹了Springboot整合MongoDB的Docker開發(fā),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值 ,需要的朋友可以參考下2020-07-07SpringBoot2底層注解@Configuration配置類詳解
這篇文章主要為大家介紹了SpringBoot2底層注解@Configuration配置類詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Spring零基礎(chǔ)入門WebFlux響應(yīng)式編程
Spring 提供了兩個并行堆棧,一種是基于帶有 Spring MVC 和 Spring Data 結(jié)構(gòu)的 Servlet API,另一個是完全反應(yīng)式堆棧,它利用了 Spring WebFlux 和 Spring Data 的反應(yīng)式存儲庫,這篇文章主要介紹了Spring-webflux 響應(yīng)式編程,需要的朋友可以參考下2022-10-10Spring與Shiro整合及加載權(quán)限表達(dá)式問題
這篇文章主要介紹了Spring與Shiro整合及加載權(quán)限表達(dá)式問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12解決BigDecimal轉(zhuǎn)long丟失精度的問題
這篇文章主要介紹了解決BigDecimal轉(zhuǎn)long丟失精度的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12