抽象類的定義:
1.對於抽象類的來說:抽象類必須有abstract修飾,只能用public 和預設修飾符修飾
2.對於抽象類的成員來說:抽象類中可以包含:
(1) 成員變數(靜態成員變數,非靜態成員成員變數)、
(2)構造方法(因為abstract定義的抽象類不能被例項化,那麼抽象類中的構造方法作用是:繼承抽象父類的的子類,在子類例項化時要呼叫父類的構造方法)
(3) 成員方法(抽象方法,普通方法,靜態方法。需要注意:抽象方法和普通方法只能用public ,protected,預設修飾。不能用private修飾,因為:private修飾與abstract一起使用無法方法重寫)
(4)初始化塊
(5)內部類
介面的定義:介面就是乙個規定,沒有為什麼就是這樣的。
1.對於介面這個類來說:介面只能用public和預設修飾符修飾(與抽象類形同)
2.對於介面成員來說:
(1) 成員變數只能是靜態成員常量(有人問不是可以不加修飾嗎?比如在介面中加入int max=0,可以實現這個介面並改變max值,可以發現這個值是不能改變的,也就是說系統會自動加上public static final 修飾符,如果是public static int max = 0;系統也會自動改為靜態常量,自己試過的。)
(2)沒有構造方法,沒有初始化塊。
(3)成員方法(只能是 public修飾的 抽象方法 ( 如果不加修飾符系統自動新增為public,因為自己加上default後不行,親測 )(只能是預設修飾符修飾的普通方法)(必須用default修飾,沒有default不行,系統不會自動新增,親測) (只能是public修飾的靜態方法)(不加系統會自動新增為public)
介面(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方法中完成許可權判斷、記錄訪問日誌和處理異常的**,在各個子類中只是完成各自的業務邏輯**。
函式式介面:乙個介面中只有乙個抽象介面,新增加註解為:@functionalinte***ce ,早期已經是函式式介面的是runnable 、comparator
介面允許有預設方法,修飾符為default或者static
介面和抽象類
介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...
抽象類和介面
抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...
抽象類和介面
1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...