JAVA知识基础(八):继承
1.概述
1.1、繼承的由來(lái)
至于由來(lái)簡(jiǎn)單一句話:多個(gè)類(lèi)中存在相同屬性和行為時(shí),將這些內(nèi)容抽取到單獨(dú)一個(gè)類(lèi)中,那么多個(gè)類(lèi)無(wú)需再定義這些屬性和行為。
繼承描述的是事物之間的所屬關(guān)系,這種關(guān)系是 is-a 的關(guān)系。
1.2、繼承的定義
繼承:就是子類(lèi)繼承父類(lèi)的屬性和行為,使得子類(lèi)對(duì)象具有與父類(lèi)相同的屬性、相同的行為。子類(lèi)可以直接訪問(wèn)父類(lèi)中的非私有的屬性和行為。
這里再聲明一點(diǎn),父類(lèi)又稱(chēng)為超類(lèi)或者基類(lèi)。而子類(lèi)又稱(chēng)為派生類(lèi)這點(diǎn)很基礎(chǔ)!
1.3、繼承的優(yōu)點(diǎn)
提高代碼的復(fù)用性。
類(lèi)與類(lèi)之間產(chǎn)生關(guān)系,為多態(tài)做了完美的鋪墊(不理解沒(méi)關(guān)系,之后我會(huì)再寫(xiě)一篇多態(tài)的文章)
雖然繼承的優(yōu)點(diǎn)很多但是Java只支持單繼承,不支持多繼承。
1.4、繼承的格式
通過(guò) extends 關(guān)鍵字,可以聲明一個(gè)子類(lèi)繼承另外一個(gè)父類(lèi),定義格式如下:
2.關(guān)于繼承之后的成員變量
當(dāng)類(lèi)之間產(chǎn)生了關(guān)系后,其中各類(lèi)中的成員變量,產(chǎn)生了哪些影響呢? 關(guān)于繼承之后的成員變量要從兩方面下手,一是成員變量不重名方面,二是成員變量重名方面。
如果子類(lèi)父類(lèi)中出現(xiàn)不重名的成員變量,這時(shí)的訪問(wèn)是沒(méi)有影響的.
如果子類(lèi)父類(lèi)中出現(xiàn)重名的成員變量,這時(shí)的訪問(wèn)是有影響的
子父類(lèi)中出現(xiàn)了同名的成員變量時(shí),在子類(lèi)中需要訪問(wèn)父類(lèi)中非私有成員變量時(shí),需要使用 super 關(guān)鍵字,至于修飾父類(lèi)成員變量,類(lèi)似于之前學(xué)過(guò)的 this 。 使用格式 super.父類(lèi)成員變量名
如果父類(lèi)中的成員變量非私有:子類(lèi)中可以直接訪問(wèn)。私有:子類(lèi)是不能直接訪問(wèn)的。
3.關(guān)于繼承之后的成員方法
當(dāng)類(lèi)之間產(chǎn)生了關(guān)系,其中各類(lèi)中的成員方法,又產(chǎn)生了哪些影響呢? 同樣我們依舊從兩方面分析。
如果子類(lèi)父類(lèi)中出現(xiàn)不重名的成員方法,這時(shí)的調(diào)用是沒(méi)有影響的。對(duì)象調(diào)用方法時(shí),會(huì)先在子類(lèi)中查找有沒(méi)有對(duì) 應(yīng)的方法,若子類(lèi)中存在就會(huì)執(zhí)行子類(lèi)中的方法,若子類(lèi)中不存在就會(huì)執(zhí)行父類(lèi)中相應(yīng)的方法.
成員方法重名大體也可以分兩種情況:
1、方法名相同返回值類(lèi)型、參數(shù)列表卻不相同(優(yōu)先在子類(lèi)查找,沒(méi)找到就去父類(lèi))
2、方法名、返回值類(lèi)型、參數(shù)列表都相同,沒(méi)錯(cuò)這就是重寫(xiě)(Override)
重寫(xiě) :子類(lèi)中出現(xiàn)與父類(lèi)一模一樣的方法時(shí)(返回值類(lèi)型,方法名和參數(shù)列表都相同),會(huì)出現(xiàn)覆蓋效果,也稱(chēng)為重寫(xiě)或者復(fù)寫(xiě)。聲明不變,重新實(shí)現(xiàn)。
4.關(guān)于繼承之后的構(gòu)造方法
構(gòu)造方法的名字是與類(lèi)名一致的,所以子類(lèi)是無(wú)法繼承父類(lèi)構(gòu)造方法的。
構(gòu)造方法的作用是初始化成員變量的。所以子類(lèi)的初始化過(guò)程中,必須先執(zhí)行父類(lèi)的初始化動(dòng)作。子類(lèi)的構(gòu)造方法中默認(rèn)會(huì)在第一句代碼中添加super(),表示調(diào)用父類(lèi)的構(gòu)造方法,父類(lèi)成員變量初始化后,才可以給子類(lèi)使用。
super() 不寫(xiě)也默認(rèn)存在,而且只能是在第一句代碼中。
下一篇是關(guān)于this與super關(guān)鍵字的總結(jié)。
總結(jié)
以上是生活随笔為你收集整理的JAVA知识基础(八):继承的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux基线核查脚本
- 下一篇: Portainer简介及部署