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

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版
好用的JavaScript開發工具