abstract與介面的區別

2021-08-25 06:02:05 字數 761 閱讀 7465

介面(inte***ce)可以說成是抽象類的一種特例,介面中的所有方法都必須是抽象的。介面中的方法定義預設為public abstract型別,介面中的成員變數型別預設為public static final。另外介面和抽象類在方法上有區別。

1.抽象類可以有構造方法,介面中不能有構造方法。

2.抽象類中可以包含非抽象的普通方法,介面中的所有方法必須都是抽象的,不能有非抽象的方法。

3.抽象類中可以有普通成員變數,介面中沒有普通成員變數。

4.抽象類中的抽象方法的訪問型別可以是public.protected和預設型別

5.抽象類中可以包含靜態方法,介面不能包含靜態方法

6.抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能是public static final 型別,並且預設即為public static final 型別

7.乙個類可以實現多個介面,但是繼承乙個抽象類。二者在應用方便也有一定的區別:介面更多的是在系統架構設計方法發揮作用,主要用於定義模組之間的通訊契約。而抽象類在**實現方面發揮作用,可以實現**的重用,例如,模板方法設計模式是抽象類的乙個典型應用,假設某個專案的所有servlet類都要用相同的方法進行許可權判斷,記錄訪問日誌和異常處理,那麼就可以定義乙個抽象的基類,讓所有的servlet都繼承這個抽象基類,在抽象基類的service方法中玩具城許可權判斷,記錄訪問日誌和處理異常的**,在各個子類中只是完成各自的業務邏輯**

8.抽象類中的抽象方法和非抽象方法在不加修飾符的情況下,都是預設的default

繼承與介面的區別

一.語法層次上 如上所述。二.設計層次上 1 抽象層次不同。抽象類是對類抽象,而介面是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性 行為,但是介面卻是對類區域性 行為 進行抽象。2 跨域不同。抽象類所跨域的是具有相似特點的類,而介面卻可以跨域不同的類。我們知道抽象類是從子類中發現公共部分,然...

抽象與介面的區別

這個問題對於我也一直是迷迷糊糊的,特此記錄一下 相同點 1抽象類和介面都不能例項化,除非是它們的子類。2抽象了和介面中的方法必須被子類實現,不然子類必須是抽象類 不同點 1抽象是被子類繼承,介面是被子類實現 2介面只能對方法進行實現,而抽象也可宣告,也可實現 4介面裡的方法不能有具體實現,說明介面重...

繼承與介面的區別

類繼承 子類完全繼承父類特點 抽象類繼承 繼承時抽象的部分不同的子類可以有不同的實現 介面繼承 所有成員在子類都可以有不同的實現 至於為什麼要用介面而不是抽象類 這要看二者適用的情況 當個性大於共性時,適合介面,如鳥和飛機,適合抽象出乙個飛的介面 當共性大於個性時,適合抽象類,如老鷹和麻雀,適合抽象...