【javase複習】## day4 抽象類、接口 ##

抽象類、接口

抽象類的存在目的
1:狗是旺旺
2:鳥是嘰嘰喳喳
3:可以將父類的方法定義爲狗叫讓鳥繼承父類重寫叫的方法
1:鳥怎麼確定是否要重寫父類方法。
2:不重寫,編譯和運行都沒有問題,只是執行鳥叫的方法就會出現狗叫
4:父類的方法很難確定。

所以實現抽象類的根本目的是讓在運行時纔會發生的錯誤提前到編譯時期

抽象類的特點:

        1:有抽象函數的類,該類一定是抽象類。
        2:抽象類中不一定要有抽象函數。(**不重要,但是語法正確**)
        3:抽象類不能使用new創建對象
            1:創建對象,使用對象的功能,抽象類的方法,沒有方法體。
        4:抽象類主要爲了提高代碼的複用性,讓子類繼承來使用。
        5:編譯器強制子類實現抽象類父類的未實現的方法。
            1:可以不實現,前提是子類的也要聲明爲抽象的。

主要注意第三點: 抽象類爲什麼不能new創建對象?
因爲抽象類的方法沒有方法體,如果能創建對象,就能通過對象調用相應的方法,但是抽象類的方法是沒有意義的,所以顯然不能創建對象

另外 抽象類一定要有構造函數,是提供給子類初始化屬性使用的。

abstract 不能與 static final private共同修飾一個方法

①如果與static共同修飾,則加載類文件後就可以通過類名.方法名調用該抽象方法,但是此時抽象方法沒有方法體 是無意義的。
②如果與final共同修飾,則該方法不可重寫,但是抽象方法不被子類重寫是沒有意義的。
③如果與private共同修飾,那麼該方法只能被該類所調用,是沒有意義的。






接口

接口要注意的事項 :
1. 接口是一個特殊的類。
2. 接口的成員變量默認的修飾符爲: public static final 。那麼也就是說接口中的成員變量都是常量。
3. 接口中 的方法都是抽象的方法,默認的修飾符爲: public abstract。
4. 接口不能創建對象。
5. 接口是沒有構造方法的。
6. 接口是給類去實現使用的,非抽象類實現一個接口的時候,必須要把接口中所有方法全部實現。

解釋:
①接口也是類,所以接口的類文件也會加載到內存,可以通過接口直接調用成員屬性。
④因爲接口中的方法都是抽象方法,如果可以創建對象就可以調用方法,顯然錯誤
⑤這一點和抽象類不一樣,因爲抽象類有構造方法便於繼承抽象類的子類給屬性賦值,但是由於接口中的成員變量都是public static final類型的,所以必須一開始就賦值,也就不需要再次調用構造函數賦值,所以也就不需要構造方法了。因爲沒有構造方法,所以也就無法定義靜態代碼塊和構造代碼塊

java是 單繼承, 多實現的
即只能有一個唯一父類,但是可以實現多個接口。

爲什麼?
如果 C 繼承A 和 B , A和B中有同名方法, 那麼當A沒有重寫的時候, 調用這個方法, 會不清楚調用哪個

如果C 實現 A和 B , A和B 中有同名方法, 因爲A必須重寫這個同名方法, 而A和B中的同名方法都是抽象方法, 所以是無所謂關心到底是重寫了哪個接口的方法,其實是一樣的。

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