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