Java基礎(chǔ)學(xué)習(xí)-- 繼承 的簡(jiǎn)單總結(jié)
程式碼參考:Java基礎(chǔ)學(xué)習(xí)小記--多態(tài)
?
為什麼要引入繼承?
還是做一個(gè)媒體庫,裡面可以放CD,可以放DVD。如果把CD和DVD做成兩個(gè)沒有聯(lián)繫的類別的話,那麼在管理這個(gè)媒體庫的時(shí)候,要單獨(dú)做一個(gè)添加CD的函數(shù),單獨(dú)做一個(gè)添加DVD的函數(shù),如果還要往這個(gè)媒體庫裡添加其他的媒體類,還要再建立另一個(gè)添加函數(shù)。我們說這樣的程式碼不具備可擴(kuò)充性。另外,CD和DVD有很多相似之處,它們的成員變數(shù)裡都有標(biāo)題,播放時(shí)長,評(píng)論,等等,我們稱這樣的程式存在大量的程式碼複製,程式碼複製是程式碼不良的表現(xiàn)。所以我們可以創(chuàng)建一個(gè)它們的父類,把他們相同的成員變量都添加進(jìn)父類,而它們都可以繼承得到這些變量,在添加到媒體庫的時(shí)候僅僅需要?jiǎng)?chuàng)建一個(gè)添加它們父類的這麼一個(gè)函數(shù),它們便也可加進(jìn)去。
子類別從父類別繼承得到了什麼?
繼承得到了父類別所有的東西,包括成員變數(shù)和成員函數(shù)。但不見得能夠存取父類別的所有東西,這樣看父類別所繼承下來的成員變數(shù)和成員函數(shù)的存取屬性。如果父類別裡有成員變數(shù)是private的,那麼子類別是不可以直接存取的。但是,private只有父類別自己可以訪問,所以我們可以在子類別裡透過呼叫父類別的public函數(shù)來間接的存取這些成員變數(shù)。
另外,子類別除了有從父類別那裡繼承得到的之外,還可以有自己的獨(dú)有的成員變數(shù)和函數(shù),寫在自己的類別裡面。
訪問屬性
訪問屬性? ?含義? ?
public ? ?對(duì)所有人開放? ?
private ? ??缺省? ?只有自己和包內(nèi)其他類別可以訪問? ?
?
super();
在父類的構(gòu)造函數(shù)中構(gòu)造過的成員變量,子類的構(gòu)造函數(shù)的參數(shù)表裡要寫明,並且用super()將這些在父類那裡構(gòu)造過的成員變數(shù)從父類別取過來。實(shí)例程式碼請(qǐng)看多態(tài)那篇博文。
super();裡面的參數(shù)會(huì)決定呼叫父類別裡的哪個(gè)建構(gòu)器,super();裡面的參數(shù)和所呼叫的建構(gòu)器的參數(shù)是相同的。
缺省模式下(如果子類別建構(gòu)器裡沒有super();),會(huì)預(yù)設(shè)呼叫父類別裡沒有參數(shù)的建構(gòu)器,如果父類別裡沒有這樣的建構(gòu)器,eclipse會(huì)報(bào)錯(cuò)。
覆蓋(override)
當(dāng)子類別和父類別裡有相同名稱的函數(shù)時(shí),子類別裡的函數(shù)會(huì)去覆蓋(override)從父類別那裡繼承來的那個(gè)同名函數(shù),於是從父類別來的那個(gè)函數(shù)就會(huì)藏起來不起作用。但是如果想在子類別中呼叫父類別中的那個(gè)同名函數(shù),應(yīng)寫成?super.函數(shù)名稱();??。
<br/>

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)