,多態就是相同行為,不同實現。多態最關鍵的兩個好處是:多態參數,異構集合。分為動態和靜態多態。靜態多態通過方法重載實現,動態多態則是通過方法重寫實現。
實現多態的步驟:
1、編寫父類,子類;
2、在子類中重寫父類方法;
3、用父類的數據類型引用子類對象;
4、調用時,自動實現該調用的方法。
多態:
1、使用父類類型引用指向子類的對象
2、該引用只能調用父類中定義的方法,不能調用子類中獨有的方法
3、如果子類中重寫了父類中的一個方法,那麼在調用這個方法時,將會調用子類中的這個方法
4、在多態中,子類可以調用父類的所有方法
抽象(abstract) :抽象方法和抽象類。抽象方法沒有方法主體,一個不包含抽象方法的類也必須是抽象類,且抽象方法必須在抽象類的所有子類中被重寫(除非子類也是抽象類)
<關鍵字instanceof用於判斷前者是否是後者的實例>
接口interface(接口可多繼承):在接口中所有方法都是抽象方法,所有方法都不提供給具體的實現,不能被實例化。
eg:publc void interface Inter{
void show(String str);
}
interface Inter2{
void show;
}
interface Inter3 extends Inter,Inter2{}
<一個類可以實現多個接口,接口之間用逗號隔開>
接口與類的相同之處:
1、接口可以有任何數量的方法
2、接口保存有“.java”為後綴的文件,接口名需要和文件名匹配
3、接口編譯後是以“.class”的字節碼文件
4、在包中的接口,字節碼文件放置在和包名稱相匹配的一個目錄結構中
不同之處:
1、接口不能被實例化
2、接口不包含任何構造器
3、接口中的所有方法都是抽象的
4、接口中不能包含實例成員變量
5、接口不能被一個類繼承,只能被一個類實現
接口聲明:
pulic interface 接口名{
//任意數量的final,static 成員變量
//任何數量的抽象方法聲明
}
接口性質:
1、接口默認是抽象的(在聲明接口時,不需要使用abstract)
2、接口中的每一個方法一是默認也是抽象的(也不使用abstract)
3、接口中的方法默認訪問級別是public(public可省略)
接口的實現(implements)
eg:public class 類名 extends 父類名 iplements 接口名
類實現接口時有兩個選擇:
1、實現接口中定義的所有方法
2、聲明自己為抽象類
標記接口:一個沒有任何方法的接口
接口與抽象類的不同之處:
1、接口中只能包含抽象方法,而抽象類可以包含普通方法
2、接口中不能定義靜態方法,而抽象類可以
3、接口中只能定義靜態常量屬性,不能定義普通屬性;而抽象類兩者都可以
4、接口不包含構造器,而抽象類可以,抽象類的構造器用於完成抽象類的初始化
5、接口中不包含初始化塊,抽象類 包含
相同之處:
1、二者都不能被實例化,都位於繼承數的頂端,用於被其它類實現或繼承
2、二者都可以包含抽象方法,實現接口或者繼承抽象類的子類都必須實現這些抽象方法