JAVA筆記08日
###08.03_面向對象(繼承案例演示)(掌握)
* A:繼承(extends)
* 讓類與類之間產生關系,子父類關系
* B:繼承案例演示:
* 動物類,貓類,狗類
* 定義兩個屬性(顏色,腿的個數)兩個功能(吃飯,睡覺)
* C:案例演示
* 使用繼承前
* D:案例演示
* 使用繼承後
###08.04_面向對象(繼承的好處和弊端)(掌握)
* A:繼承的好處
* a:提高了代碼的復用性
* b:提高了代碼的維護性
* c:讓類與類之間產生了關系,是多態的前提
* B:繼承的弊端
* 類的耦合性增強了。
* 開發的原則:高內聚,低耦合。
* 耦合:類與類的關系
* 內聚:就是自己完成某件事情的能力
###08.05_面向對象(Java中類的繼承特點)(掌握)
* A:Java中類的繼承特點
* a:Java只支持單繼承,不支持多繼承。(一個兒子只能有一個爹)
* 有些語言是支持多繼承,格式:extends 類1,類2,...
* b:Java支持多層繼承(繼承體系)
* B:案例演示
* Java中類的繼承特點
* 如果想用這個體系的所有功能用最底層的類創建對象
* 如果想看這個體系的共性功能,看最頂層的類
###08.06_面向對象(繼承的註意事項和什麽時候使用繼承)(掌握)
* A:繼承的註意事項
* a:子類只能繼承父類所有非私有的成員(成員方法和成員變量)
* b:子類不能繼承父類的構造方法,但是可以通過super(馬上講)關鍵字去訪問父類構造方法。
* c:不要為了部分功能而去繼承
* 項目經理 姓名 工號 工資 獎金
* 程序員 姓名 工號 工資
* B:什麽時候使用繼承
* 繼承其實體現的是一種關系:"is a"。
Person
Student
Teacher
水果
蘋果
香蕉
橘子
采用假設法。
如果有兩個類A,B。只有他們符合A是B的一種,或者B是A的一種,就可以考慮使用繼承。
###08.07_面向對象(繼承中成員變量的關系)(掌握)
* A:案例演示
* a:不同名的變量
* b:同名的變量 同名變量輸出的是子類變量.就近原則的關系,子類有就使用子類
###08.08_面向對象(this和super的區別和應用)(掌握)
* A:this和super都代表什麽
* this:代表當前對象的引用,誰來調用我,我就代表誰
* super:代表當前對象父類的引用
* B:this和super的使用區別
* a:調用成員變量
* this.成員變量 調用本類的成員變量,也可以調用父類的成員變量
* super.成員變量 調用父類的成員變量
* b:調用構造方法
* this(...) 調用本類的構造方法
* super(...) 調用父類的構造方法
* c:調用成員方法
* this.成員方法 調用本類的成員方法,也可以調用父類的方法
* super.成員方法 調用父類的成員方法
###08.09_面向對象(繼承中構造方法的關系)(掌握)
* A:案例演示
* 子類中所有的構造方法默認都會訪問父類中空參數的構造方法
* B:為什麽呢?
* 因為子類會繼承父類中的數據,可能還會使用父類的數據。
* 所以,子類初始化之前,一定要先完成父類數據的初始化。
* 其實:
* 每一個構造方法的第一條語句默認都是:super() Object類最頂層的父類。
###08.10_面向對象(繼承中構造方法的註意事項)(掌握)
* A:案例演示
* 父類沒有無參構造方法,子類怎麽辦?
* super解決
class Son{
public Son(int age){
super(age);
}
}
* this解決
this(age);
* B:註意事項
* super(…)或者this(….)必須出現在構造方法的第一條語句上
###08.12_面向對象(繼承中成員方法關系)(掌握)
* A:案例演示
* a:不同名的方法
* b:同名的方法 就近原則,方法重寫
###08.13_面向對象(方法重寫概述及其應用)(掌握)
* A:什麽是方法重寫
* 重寫:子父類出現了一模一樣的方法(註意:返回值類型可以是子父類,這個我們學完面向對象講)
* B:方法重寫的應用:
* 當子類需要父類的功能,而功能主體子類有自己特有內容時,可以重寫父類中的方法。這樣,即沿襲了父類的功能,又定義了子類特有的內容。
* A:方法重寫註意事項
* a:父類中私有方法不能被重寫
* 因為父類私有方法子類根本就無法繼承
* b:子類重寫父類方法時,訪問權限不能更低
* 最好就一致
* c:父類靜態方法,子類也必須通過靜態方法進行重寫
* 其實這個算不上方法重寫,但是現象確實如此,至於為什麽算不上方法重寫,多態中我會講解(靜態只能覆蓋靜態)
* 子類重寫父類方法的時候,最好聲明一模一樣。
* A:方法重寫的面試題
* Override和Overload的區別?Overload能改變返回值類型嗎?
* overload可以改變返回值類型,只看參數列表
* 方法重寫:子類中出現了和父類中方法聲明一模一樣的方法。與返回值類型有關,返回值是一致(或者是子父類)的
* 方法重載:本類中出現的方法名一樣,參數列表不同的方法。與返回值類型無關。
* 子類對象調用方法的時候:
* 先找子類本身,再找父類。
* Override和Overload的區別?Overload能改變返回值類型嗎?
* overload可以改變返回值類型,只看參數列表
* 方法重寫:子類中出現了和父類中方法聲明一模一樣的方法。與返回值類型有關,返回值是一致(或者是子父類)的
* 方法重載:本類中出現的方法名一樣,參數列表不同的方法。與返回值類型無關。
* 子類對象調用方法的時候:
* 先找子類本身,再找父類
###08.19_面向對象(final關鍵字修飾類,方法以及變量的特點)(掌握)
* A:final概述
* B:final修飾特點
* 修飾類,類不能被繼承
* 修飾變量,變量就變成了常量,只能被賦值一次
* 常量命名規範:每個單詞都大寫,如果兩個單詞中間用下劃線隔開MAX_NUM
* 修飾方法,方法不能被重寫
* C:案例演示
* final修飾特點
###08.20_面向對象(final關鍵字修飾局部變量)(掌握)
* A:案例演示
* 方法內部或者方法聲明上都演示一下(了解)
* 基本類型,是值不能被改變
* 引用類型,是地址值不能被改變,對象中的屬性可以改變
###08.21_面向對象(final修飾變量的初始化時機)(掌握)
* A:final修飾變量的初始化時機
* 顯示初始化
final int num = 10; 顯示初始化
* 在對象構造完畢前即可
class Demo{
fimal int num;
public Demo(){
num = 10;
}
}
JAVA筆記08日