摘要:格式子類名父類名好處提高了代碼的復(fù)用性提高了代碼的維護性通過少量的修改,滿足不斷變化的具體要求讓類與類產(chǎn)生了一個關(guān)系,是多態(tài)的前提要求有共同的屬性或操作有細微的差別繼承的弊端讓類的耦合性增強。
第二階段 JAVA面向?qū)ο?/strong> 第二章 繼承
其實在我們面向?qū)ο筮@一階段的學(xué)習(xí)中,我們就是圍繞Java的三大特性(封裝、繼承、多態(tài))來講解的,在上一掌內(nèi)容中我們講解了一部分封裝的有關(guān)知識,今天我們來重點學(xué)習(xí)繼承的學(xué)習(xí)。
2.1 繼承的基本認識 概述:繼承就是在一個已有類的基礎(chǔ)上派生出新類
子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為
(父類更通用,子類更具體)
功能:有了繼承以后,我們定義一個類的時候,可以在一個已經(jīng)存在的類的 基礎(chǔ)上,還可以定義自己的新成員。 格式:class 子類名 extends 父類名 {} 好處:A:提高了代碼的復(fù)用性
B:提高了代碼的維護性(通過少量的修改,滿足不斷變化的具體要求)
C:讓類與類產(chǎn)生了一個關(guān)系,是多態(tài)的前提
要求:有共同的屬性或操作
有細微的差別
2.2 繼承的弊端A:讓類的耦合性增強。這樣某個類的改變就會影響其他和該類相關(guān)的類
·原則:低耦合,高內(nèi)聚。
·耦合:類與類的關(guān)系
·內(nèi)聚:自己完成某件事情的能力
B:打破了封裝性
特點:
A:Java只支持單繼承,不支持多繼承(C++支持)
B:Java支持多層繼承(繼承體系)
兒子繼承爸爸 爸爸繼承爺爺 兒子可以通過爸爸繼承爺爺
注意:
A: 子類只能繼承父類所有非私有成員(成員方法和成員變量)
B:子類不能繼承父類的構(gòu)造方法,但是可以通過super關(guān)鍵字去訪問方法
C: 不要為了部分功能而繼承(多層繼承會使得子類繼承多余的方法)
2.3 Java繼承中的成員關(guān)系A:成員變量
a:子類的成員變量名稱和父類中的成員變量名稱不一樣,這個太簡單
b:子類的成員變量名稱和父類中的成員變量名稱一樣,這個怎么訪問
子類的方法訪問變量的查找順序:
? ·在子類方法的局部范圍找,有就使用。
·在子類的成員范圍找,有就使用。
·在父類的成員范圍找,有就使用。
·找不到,就報錯。
2.4 Super 關(guān)鍵字不僅要輸出局部范圍的num,還要輸出本類成員范圍的num
使用super關(guān)鍵字
this 和super的區(qū)別this 代表本類對應(yīng)的引用
Super 代表父親存儲空間的標(biāo)識(可以理解為父親引用)可以操作父親 的成員
使用方法:A:調(diào)用成員變量
·this.成員變量 調(diào)用本類的成員變量
·super.成員變量 調(diào)用父類的成員變量
B:調(diào)用構(gòu)造方法
·this(...) 調(diào)用本類的成員變量
·Super(...)調(diào)用父類的成員變量
C:調(diào)用成員方法
·this.成員方法 調(diào)用本類的成員方法
·super.成員方法 調(diào)用父類的成員方法
2.5 繼承中構(gòu)造方法的關(guān)系A:子類中所有的構(gòu)造方法默認都會訪問父類中空參數(shù)的構(gòu)造方法
B:理由:
因為子類會繼承父類中的數(shù)據(jù),可能還會使用父類的數(shù)據(jù)
所以,子類初始化之前,一定要先完成父類數(shù)據(jù)的初始化
注意:子類每一個構(gòu)造方法的第一條語句默認都是:super()
如果父類沒有無參構(gòu)造方法,那么子類的構(gòu)造方法會出現(xiàn)什么現(xiàn)象?
報錯
解決方法:
A:在父類中加一個無參構(gòu)造方法
B:通過使用super關(guān)鍵字去顯示的調(diào)用父類的帶參構(gòu)造方法
C:子類通過this去調(diào)用本類的其他構(gòu)造方法
子類中一定要有一個去訪問父類的構(gòu)造方法,否則父類數(shù)據(jù)就沒 有初始化。
注意事項;
this(...)或者super(...)必須出現(xiàn)在第一條語句上。
否則就可能對父類的數(shù)據(jù)進行了多次初始化
2.6 繼承中成員方法的關(guān)系子類中的方法和父類中的方法聲明一樣
通過子類調(diào)用方法:
·先找子類中,看有沒有這個方法,有就使用
·再看父類中,看有沒有這個方法,有就是用
·如果沒有就報錯(不去看父親的父親)
2.7 方法重寫(override)方法重寫:子類中出現(xiàn)了和父類中方法聲明一模一樣的方法
(區(qū)別于方法重載,方法重載僅僅是方法名一樣)
子類重寫的應(yīng)用:當(dāng)子類需要父類的功能,而功能主體子類又有自己特有的內(nèi)容時,這樣既沿襲了父類的功能,又定義了子類特有的功能
super.方法名(參數(shù)名); //避免重復(fù)代碼
2.8 final關(guān)鍵字final 關(guān)鍵字聲明類可以把類定義為不能繼承的,即最終類;
或者用于修飾方法,該方法不能被子類重寫:
Final修飾變量的初始化時機
·被final修飾的變量只能賦值一次
·在構(gòu)造方法完畢前(非靜態(tài)的常量)
//聲明方法 final class 類名{//類體} //聲明類 修飾符(public/private/default/protected) final 返回值類型 方法名(){//方法體}結(jié)尾:
如果內(nèi)容中有什么不足,或者錯誤的地方,歡迎大家給我留言提出意見, 蟹蟹大家 !^_^
如果能幫到你的話,那就來關(guān)注我吧!
在這里的我們素不相識,卻都在為了自己的夢而努力 ?一個堅持推送原創(chuàng)Java技術(shù)的公眾號:理想二旬不止
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/74671.html
摘要:前言面試中對于技術(shù)職位,一般分筆試與面談,如果面試官的一些小問題你可以立馬找到對應(yīng)的知識點擴展開來,那么這就是你的優(yōu)勢,本系列將講述一些面試中的事,不會很詳細,但是應(yīng)該比較全面吧。 前言 面試中對于技術(shù)職位,一般分筆試與面談,如果面試官的一些小問題你可以立馬找到對應(yīng)的知識點擴展開來,那么這就是你的優(yōu)勢,本系列將講述一些java面試中的事,不會很詳細,但是應(yīng)該比較全面吧。 主要內(nèi)容 pa...
摘要:現(xiàn)在回到我們這一章節(jié)的標(biāo)題,將它做下補充關(guān)于那些事四之基于構(gòu)架基礎(chǔ)樣式庫基礎(chǔ)庫構(gòu)思為什么要做基礎(chǔ)庫我上一章節(jié)的末尾拋出了幾個問題假設(shè)你要做一個游戲單頁面,網(wǎng)頁上并不存在表單內(nèi)容,那么你就要移除一些冗余的代碼,開始自定義樣式來滿足自己的需求。 前言 先來回顧一下前幾章節(jié),我們都說了哪些內(nèi)容: CSS Reset 歷史 與 Normalize.css 介紹 Normalize.css...
摘要:現(xiàn)在回到我們這一章節(jié)的標(biāo)題,將它做下補充關(guān)于那些事四之基于構(gòu)架基礎(chǔ)樣式庫基礎(chǔ)庫構(gòu)思為什么要做基礎(chǔ)庫我上一章節(jié)的末尾拋出了幾個問題假設(shè)你要做一個游戲單頁面,網(wǎng)頁上并不存在表單內(nèi)容,那么你就要移除一些冗余的代碼,開始自定義樣式來滿足自己的需求。 前言 先來回顧一下前幾章節(jié),我們都說了哪些內(nèi)容: CSS Reset 歷史 與 Normalize.css 介紹 Normalize.css...
摘要:通過同一個構(gòu)造函數(shù)實例化的多個實例對象具有同一個原型對象。所以當(dāng)給原型對象賦值一個新對象時,切記將原型對象的指回原構(gòu)造函數(shù)以上就是本次分享的內(nèi)容,關(guān)于原型對象的其他知識,下一篇基礎(chǔ)原型對象的那些事二會講到。 談起js的基礎(chǔ),繞不過去的坎就是:原型鏈、作用域鏈、this(em...好吧,還有閉包),今天總結(jié)一下關(guān)于原型對象的一些知識,供自己和大家復(fù)習(xí)。 概念理解 什么是原型對象呢?有以下...
閱讀 3633·2023-04-26 02:05
閱讀 2074·2021-11-19 11:30
閱讀 4310·2021-09-30 09:59
閱讀 3231·2021-09-10 10:51
閱讀 2676·2021-09-01 10:30
閱讀 1589·2021-08-11 11:20
閱讀 2680·2019-08-30 15:54
閱讀 616·2019-08-30 10:49