(十五)抽象類與介面有什麼異同

2021-09-10 23:47:48 字數 983 閱讀 6332

抽象類和介面都是支援抽象類定義的兩種機制

一、抽象類

①包含抽象方法的類,必須宣告為抽象類,抽象類中可以包含非抽象方法

②抽象可以是抽象方法、抽象類,但不能是抽象屬性

③抽象類在使用的過程中不能被例項化,但是可以建立乙個物件使其指向子類的乙個例項

這已經很熟悉了,person child=new child();

④抽象類的子類若實現所有的抽象方法,則為非抽象類,否則還是抽象類

二、介面

①可以看成抽象類的變體,所有方法都是抽象的,可以通過介面實現多重繼承

②變數都是static final型別

三、介面與抽象類的相同點

①都不能被例項化(介面不能建立物件,抽象類可以建立指向子類的物件)

②介面的實現類或抽象類的子類都只有實現了介面或抽象類中的方法才能被例項化

四、介面與抽象類的不同點

方法實現:介面只有定義,其方法不能在介面中實現,只有實現介面的類才能實現介面中定義的方法;

抽象類可以有定義與實現,即其方法可以在抽象類中被實現

設計理念:介面強調特定功能的實現,「has-a」關係;抽象類強調所屬關係,「is-a」關係

多繼承:介面需要實現(implements),但抽象類只能被繼承(extends)。乙個類可以實現多個介面,但乙個類只能繼承乙個抽象類

④介面中定義的成員變數預設為public static final,必須賦值,方法都是public、abstract,只能被這兩個關鍵字修飾

抽象類的成員變數任意修飾符(但不能為abstract),在子類中可以重新定義,抽象類中的抽象方法不能用private、static、synchronized、native等訪問修飾符修飾

五、什麼時候使用抽象類和介面

抽象類實現介面有什麼意義?

抽象類當然能夠實現介面,意義如下 一般來說我們使用普通類來實現介面,這個普通類就必須實現介面 中所有的方法,這樣的結果就是普通類中就需要實現多餘的方法,造成 冗餘。但是如果我們使用的是 抽象類來實現介面,那麼就可以只實現介面中的部分方法,並且當其他類繼承這個抽象類時,仍然可以實 現介面中有但抽象類並...

介面與抽象類的異同

1.介面與抽象類都不能例項化,他們都位於繼承的頂端,用於被其他類繼承或者實現 2.介面與抽象類都可以包含抽象方法,實現或者繼承他們的那些子類必須都實現這些抽象方法 介面抽象類 介面體現了一種規範,介面提供了對外服務的一些方法,當乙個程式實現介面時,介面時多個模組間的耦合標準,當多個程式實現介面時,介...

抽象類和介面有什麼區別

含有 abstract 修飾符的 class 即為抽象類,abstract 類不能建立的例項物件。含有 abstract 方法的類必須定義為抽象類,抽象類中的方法不必是抽象的。抽象類中定義抽象方法必須在具體子類中實現,所以,不能有抽象構造方法或抽象靜 態方法。如果的子類沒有實現抽象父類中的所有抽象方...