Java基礎針對自己薄弱環節總結04(面向對象多態)

一、多態的概念和前提


1、概念-什麼是多態

對象在不同時刻表現出的不同的狀態。

2、前提

A:要有繼承關係或實現關係

B:要有方法重寫或實現

C:要有父類引用指向子類對象,或父類接口指向子類對象

3、舉例:

       狗是動物


二、多態的成員特點


1、成員變量 

編譯看左邊,運行看左邊

Fu f=new Zi();

f.name;//調用的是父類的name

2、非靜態成員方法

Fu f=new Zi();

f.show();//調用的是子類的show

3、產生以上的原因

方法有重寫,變量沒有重寫


三、多態的弊端和好處


弊端:父類引用不能直接使用子類對象的特有功能。

解決方案: 向下轉型(強轉)

好處:增強了程序的擴展性和可維護行


四、轉型過程中出現的問題


 該異常產生的原因:類型不匹配
 一個父類的引用指向的是狗,要把這個父類的引用強制轉換成貓,所以不行
 Animal animal = new Dog();
 Cat cat = (Cat)animal;//因爲animal存儲的是狗,強轉成貓就會報錯  
   

五、抽象類和抽象方法


1、抽象方法

只有方法聲明,沒有方法體的方法成爲抽象方法,該方法用abstract修飾

2、抽象類

如果一個類中含有抽象方法,這個類就可以成爲抽象類,該類被abstract修飾

3、什麼時候定義抽象類

如果一個方法我們不確定他要做什麼,就把這個方法定義成抽象的,那麼這個類就被定義成抽象類

4、抽象類的基本特定

1)、抽象類抽象方法用abstract修飾

2)、有抽象方法的類一定是抽象類,抽象類中不一定有抽象方法

3)、抽象類不能被實例化

4)、如果一個類繼承抽象類,要麼本身是抽象類,要麼必須實現抽象方法

5)、抽象類的作用

強制子類必須完成某種功能

6、抽象類的成員特點

1)、成員變量:可以常量,可以變量

2)、構造方法

    有構造方法,但是不能創建對象,只是用於子類訪問父類數據時,對父類的成員進行初始化。

3)、成員方法

                 可以有抽象方法,也可以有非抽象方法


六、接口


1、概念

我們可以把接口看成一種特殊的抽象類,比抽象更抽象。因爲它裏面的方法都是抽象的,但注意接口不是類,我們只是把它看成類

2、接口的基本特點

1)、接口不能被實例化。

2)、接口中的方法:

          要麼被子類重寫。

          要麼子類也是抽象類。

3、接口的成員特點

1)、成員變量:接口中只有常量

因爲接口的成員變量有默認修飾符:public static final

推薦:永遠自己給出修飾符。

2)、構造方法

沒有構造方法//因爲接口中的成員變量都被final修飾,定義的時候必須做初始化

任何類如果沒有繼承父類,那麼這個類就繼承自Object類。//所有類都直接或者間接的繼承自Object類。Object類是所有類的超類

3)、成員方法:接口中的方法都是抽象的

          因爲接口中的成員方法有默認修飾符:public abstract

          推薦:永遠自己給出修飾符。

4)、接口的注意事項
      接口中不能有靜態代碼塊,代碼塊,構造方法

4、接口與類,抽象類的關係

1)、抽象類和接口的關係(掌握)

         抽象類:

                   成員變量:可以是變量,也可以是常量。

                   構造方法:有構造方法。

                   成員方法:可以是抽象方法,也可以是非抽象方法。

         接口:

                   成員變量:只能是常量。

                              默認修飾符:public static final

                   成員方法:只能是抽象方法。

                              默認修飾符:public abstract

2)、類與接口的關係(掌握)

         類與類:

                   繼承關係,只能單繼承,可以多層繼承。

         類與接口:

                   實現關係,可以單實現,也可以多實現。

                   還可以在繼承一個類的同時,實現多個接口。

         接口與接口:

                   繼承關係,可以單繼承,也可以多繼承。

3)、設計理念的區別

         抽象類被繼承,這個類中定義的是整個繼承體現的共性內容。

                   體現:is a

         接口被實現,這個接口中定義的是整個體現的擴展內容。

                   體現:like a


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章