,多態就是相同行為,不同實現。多態最關鍵的兩個好處是:多態參數,異構集合。分為動態和靜態多態。靜態多態通過方法重載實現,動態多態則是通過方法重寫實現。

      實現多態的步驟:

      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、二者都可以包含抽象方法,實現接口或者繼承抽象類的子類都必須實現這些抽象方法