1.繼承? ? 在Java中乘盼,類的繼承是指在一個現(xiàn)有類的基礎(chǔ)上去構(gòu)建一個新的類彤守,構(gòu)建出來的新類被稱作子類,現(xiàn)有類被稱作父類,子類會自動擁有父類所有可繼承的屬性和方法况鸣。
繼承的格式&使用: 在程序中,如果想聲明一個類繼承另一個類酱虎,需要使用extends關(guān)鍵字担猛。
格式:? ? class 子類 extends 父類 {}
子類在繼承父類的時候,會自動擁有父類的成員岳遥。
繼承的好處:
1奕翔、繼承的出現(xiàn)提高了代碼的復(fù)用性,提高軟件開發(fā)效率浩蓉。
2派继、繼承的出現(xiàn)讓類與類之間產(chǎn)生了關(guān)系,提供了多態(tài)的前提捻艳。
在類的繼承中驾窟,需要注意一些問題,具體如下:
1认轨、在Java中纫普,類只支持單繼承,不允許多繼承,也就是說一個類只能有一個直接父類2昨稼、多個類可以繼承一個父類? ? ? ? ? ? ? ? ? ? ? 3节视、在Java中,多層繼承是可以的假栓,即一個類的父類可以再去繼承另外的父類寻行,例如C類繼承自B類,而B類又可以去繼承A類匾荆,這時拌蜘,C類也可稱作A類的子類? ? ? ? ? ? ? ? ? ? ? ? ? 4、在Java中牙丽,子類和父類是一種相對概念简卧,也就是說一個類是某個類父類的同時,也可以是另一個類的子類烤芦。例如上面的這種情況中举娩,B類是A類的子類,同時又是C類的父類构罗。
繼承-子父類中成員變量的特點
成員變量:如果子類父類中出現(xiàn)不同名的成員變量铜涉,這時的訪問是沒有任何問題。當(dāng)子父類中出現(xiàn)了同名成員變量時遂唧,在子類中若要訪問父類中的成員變量芙代,必須使用關(guān)鍵字super來完成。super用來表示當(dāng)前對象中包含的父類對象空間的引用盖彭。
在子類中纹烹,訪問父類中的成員變量格式:
? ? ? ? super.父類中的成員變量
1.子父類中成員方法的特點
當(dāng)在程序中通過對象調(diào)用方法時,會先在子類中查找有沒有對應(yīng)的方法召边,若子類中存在就會執(zhí)行子類中的方法滔韵,若子類中不存在就會執(zhí)行父類中相應(yīng)的方法。
成員方法特殊情況——覆蓋
子類中出現(xiàn)與父類一模一樣的方法時掌实,會出現(xiàn)覆蓋操作陪蜻,也稱為override重寫、復(fù)寫或者覆蓋贱鼻。
2.方法重寫(覆蓋)的應(yīng)用:
當(dāng)子類需要父類的功能宴卖,而功能主體子類有自己特有內(nèi)容時,可以重寫父類中的方法邻悬,這樣症昏,即沿襲了父類的功能,又定義了子類特有的內(nèi)容父丰。
在子類中肝谭,訪問父類中的成員方法格式:
? ? ? ? super.父類中的成員方法();
方法重寫的注意事項
?? 子類方法覆蓋父類方法掘宪,必須要保證權(quán)限大于等于父類權(quán)限。
總結(jié):當(dāng)一個類是另一個類中的一種時攘烛,可以通過繼承魏滚,來繼承屬性與功能。如果父類具備的功能內(nèi)容需要子類特殊定義時坟漱,進(jìn)行方法重寫鼠次。
二.抽象類? ? 分析事物時,發(fā)現(xiàn)了共性內(nèi)容芋齿,就出現(xiàn)向上抽取腥寇。會有這樣一種特殊情況,就是方法功能聲明相同觅捆,但方法功能主體不同赦役。那么這時也可以抽取,但只抽取方法聲明栅炒,不抽取方法主體掂摔。那么此方法就是一個抽象方法。
抽象方法定義的格式:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? public abstract 返回值類型 方法名(參數(shù));
抽象類定義的格式: abstract class 類名 {? }
抽象類的特點:
1职辅、抽象類和抽象方法都需要被abstract修飾。抽象方法一定要定義在抽象類中聂示。? ? 2域携、抽象類不可以直接創(chuàng)建對象,原因:調(diào)用抽象方法沒有意義鱼喉。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3秀鞭、只有覆蓋了抽象類中所有的抽象方法后,其子類才可以創(chuàng)建對象扛禽。否則該子類還是一個抽象類锋边。
之所以繼承抽象類,更多的是在思想编曼,是面對共性類型操作會更簡單豆巨。
3.接口:理解為是一個特殊的抽象類,但它不是類掐场,是一個接口
接口的特點:
1往扔,定義一個接口用interface關(guān)鍵字 interface Inter{}
2,一個類實現(xiàn)一個接口熊户,實現(xiàn)implements關(guān)鍵字? ? class Demo implements Inter{}
3, 接口不能直接創(chuàng)建對象
通過多態(tài)的方式萍膛,由子類來創(chuàng)建對象,接口多態(tài)
接口中的成員特點:
成員變量:只能是final 修飾的常量
默認(rèn)修飾符: public static final
成員方法:只能是抽象方法
默認(rèn)修飾符: public abstract
類與類嚷堡,類與接口蝗罗,接口與接口之間的關(guān)系
類與類之間:繼承關(guān)系,單繼承,可以是多層繼承
類與接口之間: 實現(xiàn)關(guān)系串塑,單實現(xiàn)沼琉,也可以多實現(xiàn)
接口與接口之間:繼承關(guān)系,單繼承拟赊,也可以是多繼承
Java中的類可以繼承一個父類的同時刺桃,實現(xiàn)多個接口
4.多態(tài):理解為同一種物質(zhì)的多種形態(tài)
多態(tài)使用的前提:
1,有繼承或者實現(xiàn)關(guān)系
2吸祟,要方法重寫
3瑟慈,父類引用指向子類對象
多態(tài)的成員訪問特點:方法的運行看右邊,其他都看左邊
多態(tài)的好處:提高了程序的擴(kuò)展性
多態(tài)的弊端:不能訪問子類的特有功能
多態(tài)的分類
? 類的多態(tài)
abstract class Fu {?
public abstract void method();
}
class Zi extends Fu {
public void method(){
System.out.println(“
}
}
//類的多態(tài)使用
Fu fu= new Zi();
接口的多態(tài)
interface Fu {
public abstract void method();
}
class Zi implements Fu {
public void method(){
System.out.println(“重寫接口抽象方法”
}
}
//接口的多態(tài)使用
Fu fu = new Zi();
instanceof 關(guān)鍵字
格式: 對象名 instanceof 類名? ? ? ? ? ? ? ? ? ? 返回值: true, false? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 作用: 判斷指定的對象 是否為 給定類創(chuàng)建的對象