抽象和介面是支援抽象方法的兩種機制,也是平時使用最頻繁的內容,在架構設計方面也有很多涉及。通過本文進行一下知識點的整理。如果有不準確的地方,還請指正。
1. 抽象
1.1 首先明確什麼是抽象方法,只有宣告,沒有具體方法體的方法我們稱之為抽象方法,使用abstract進行修飾
1.2 含有抽象方法的類,我們叫做抽象類。ps:之前一次面試,乙個小姐姐問我抽象類是不是必須含有抽象方法,我當時認為,抽象類的主要作用是,通過定義抽象方法來定義行為,然後通過子類繼承抽象方法進行具體的實現。這才是抽象方法存在的意義。可是人家說抽象方法只要生命成abstract的,即使不包含抽象方法,那麼他也是抽象方法。我t.t,那這個類宣告成抽象類幹嘛.. 不過回來查書發現,確實有這種說法,所以還是記住這個概念吧-》抽象類可以不包含抽象方法
1.3 包含抽象方法的類稱為抽象類,但並不意味著抽象類中只能有抽象方法,它和普通類一樣,同樣可以擁有成員變數和普通的成員方法。注意,抽象類和普通類的主要有三點區別:
1)抽象方法必須為public或者protected(因為如果為private,則不能被子類繼承,子類便無法實現該方法),預設情況下預設為public。
2)抽象類不能用來建立物件;
3)如果乙個類繼承於乙個抽象類,則子類必須實現父類的抽象方法。如果子類沒有實現父類的抽象方法,則必須將子類也定義為為abstract類。
2. 介面
2.1 介面是將方法抽象出來,然後共別人呼叫
2.2 介面中可以含有變數和方法,但是變數都被定義成public final static , 方法被定義為public abstract
2.3 乙個類可以實現多個介面
3 介面和抽象類的區別
3. 1.語法層面上的區別
1)抽象類可以提供成員方法的實現細節,而介面中只能存在public abstract 方法;
2)抽象類中的成員變數可以是各種型別的,而介面中的成員變數只能是public static final型別的;
3)介面中不能含有靜態**塊以及靜態方法,而抽象類可以有靜態**塊和靜態方法;
4)乙個類只能繼承乙個抽象類,而乙個類卻可以實現多個介面。
3.2.設計層面上的區別
1)抽象類是對一種事物的抽象,即對類抽象,而介面是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性、行為,但是介面卻是對類區域性(行為)進行抽象。
2)設計層面不同,抽象類作為很多子類的父類,它是一種模板式設計。而介面是一種行為規範,它是一種輻射式設計。
抽象類 抽象方法知識點
抽象類就是不能使用new方法進行例項化的類,即沒有具體例項物件的類。抽象類有點類似 模板 的作用,目的是根據其格式來建立和修改新的類。物件不能由抽象類直接建立,只可以通過抽象類派生出新的子類,再由其子類來建立物件。抽象方法就是以abstract修飾的方法,這種方法只宣告返回的資料型別 方法名稱和所需...
抽象類及介面相關知識點
可宣告引用,更加純粹的使用多型。抽象方法 用abstract修飾的方法,沒有方法體,其訪問修飾符不能用private,因為抽象方法需要被繼承重寫,預設的default也不宜用,雖然編譯不會出錯,但是如果父子類不在同乙個包,則後患無窮。因此public以及protected可以使用,常用的是publi...
java基礎6 抽象類 介面
介面中所有方法都是抽象的。介面中的成員訪問控制型別是public 即使沒有顯式標示出來 介面中變數預設public static final,所以都是全域性靜態常量。介面中方法預設public abstract。抽象類的子類必須覆蓋其所有的抽象方法才能被例項化,否則還是抽象類。定義乙個新介面,用ex...