抽象類和接口

(1)抽象類
    概念:使用關鍵字abstract修飾的類叫做抽象類,用abstract來修飾的方法叫做抽象方法
    特點:含有抽象方法的類必須被聲明爲抽象類(不管是否還包含其他一些一般方法,否則編譯報錯)
        抽象類可以沒有抽象方法,可以有普通方法
        抽象類必須被繼承,抽象方法必須被重寫(若子類還是一個抽象類,不需要重寫)
        抽象類不能被實例化(不能直接構造一個該類的對象)

(2)接口

    概念:是一系列方法的聲明
    特點:只有聲明沒有實現
         不同類中有不同的方法實現

(3)共同點

    接口和抽象類都不能被實例化,他們都位於繼承樹的頂端,用於被其他類實現和繼承

    接口和抽象類都可以包含抽象方法,實現接口或繼承抽象類的普通子類都必須實現這些方法。

(4)不同點

    接口裏只能包含抽象方法和默認方法,不能爲普通方法提供方法實現;抽象類則完全可以包含普通方法。
    接口裏不能定義靜態方法,抽象類裏可以定義靜態方法
    接口裏只能定義靜態常量,不能定義普通成員變量;抽象類裏則既可以定義普通成員變量,也可以定義靜態常量
    接口裏不包含構造器,抽象類裏可以包含構造器,抽象類裏的構造器並不是用於創建對象,而是讓其子類調用這些構造器來完成屬於抽象類的初始化操作
    接口裏不能包含初始化塊,但抽象類則完全可以包含初始化塊
    一個類最多只能有一個直接父類,包括抽象類;但一個類可以直接實現多個接口,通過實現多個接口可以彌補Java單繼承的不足。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章