學習Java基礎知識,打通面試關~十二介面與抽象類
在我們Java開發的過程中,介面使我們經常使用到。但是我們也會用到抽象類。那麼我們在開發的時,具體應該怎麼選擇呢?這兩者有什麼區別?我們今天就來學習下。
抽象類
抽象類顧名思義就是不能例項化的類,我們在建立的時候會使用abstract 來建立。在抽象類中含有無具體實現的方法,所以我們在使用的時候不能使用該類來建立物件。
抽象類在表面上普通的類沒有區別,可以有多個抽象方法,當然也可以沒有抽象方法。
抽象類的實現主要是為了提供程式碼複用的目的。
抽象類前面的修飾除了abstract ,還有有public,protected,預設情況下是public。不能是private.不然子類不能繼承父類。
我們子類在繼承抽象類時,子類必須實現父類的抽象方法,否則 ,子類也必須定義為抽象類。
public abstract class Abstorct {
//方法宣告為抽象的。
public abstract void add();
}
public class AbstorctImpl extends Abstorct {
@Override
public void add() {
}
}
介面
程式設計中,介面我們經常使用,利用它達到API定義與實現分離的目的。
在Java中,是沒有多繼承這一實現的,但是我們可以使用介面來達到這個目的。方便我們去實現我們想要的目的。
介面中的變數總是被隱式指定為public static final 變數。 並且方法也是被隱式的定義為public abstract。介面中的方法必須都是抽象方法。
在java8以後,介面中也有了預設的實現方法。
//java集合中一個預設實現的方法。
public interface Collection<E> extends Iterable<E> {
default boolean removeIf(Predicate<? super E> filter) {
Objects.requireNonNull(filter);
boolean removed = false;
final Iterator<E> each = iterator();
while (each.hasNext()) {
if (filter.test(each.next())) {
each.remove();
removed = true;
}
}
return removed;
}
}
兩者不同點
兩者一個是類一個是介面,從子類來實現或者繼承時,實現就不同,繼承類java中只能單繼承。
抽象類是事務的抽象,比如我們對於一個動物的描述,人和猴都有相似的東西,可以抽象出來共同的特徵。 抽象類 是一個 has-a的關係。介面是is-a的關係。比如猴是否能跳,能跳躍,那麼就能實現該介面,不能實現則不能實現。
介面中不能含有靜態程式碼塊和靜態方法,但是抽象類是可以存在靜態程式碼塊和靜態方法的。
介面中的成員變數預設是public static final 型別的。抽象函式中的成員可以是各個型別的。
我們在程式中如果對介面進行增加方法,那麼子類實現也得增加其實現方法 不可取,但是java8以後增加了預設方法的實現。而抽象類中新增了非抽象方法,子類只會享受其能力的擴充套件,不用擔心編譯出現問題。
簡單瞭解下抽象方法和介面,讓我們在程式設計的時候更加享受其特性帶來的方便。在選擇上可以有更多的選擇。
原文釋出時間為:2018-07-01
本文作者:mengrui
本文來自雲棲社群合作伙伴“LuckQI”,瞭解相關資訊可以關注“LuckQI”。
相關文章
- 學習Java基礎知識,打通面試關~十三鎖機制Java面試
- JavaSE基礎知識學習—–抽象類和介面Java抽象
- JavaSE基礎知識學習-----抽象類和介面Java抽象
- 【Java面試題-基礎知識02】Java抽象類和介面六連問?Java面試題抽象
- Java 基礎學習總結(一)抽象類和介面Java抽象
- Java基礎-抽象類和介面Java抽象
- Java基礎10 介面的繼承與抽象類Java繼承抽象
- Java基礎之介面與抽象類及多型、內部類Java抽象多型
- JavaSE基礎知識學習-----Object類JavaObject
- Java:面試題:抽象類與介面的區別Java面試題抽象
- Java EE 基礎知識學習(六)Java
- Java基礎知識面試題Java面試題
- Java 基礎面試知識點Java面試
- Java 基礎鞏固:再談抽象類和介面Java抽象
- 別樣JAVA學習(一)基礎知識Java
- Java學習筆記之介面和抽象類Java筆記抽象
- 整理Java基礎知識--Calendar 類Java
- java基礎總結(面試高頻問題)十:java抽象類和介面的區別Java面試抽象
- JavaSE基礎知識學習-----Static關鍵字Java
- 【ASM學習】基礎知識ASM
- Java總結-抽象類與介面Java抽象
- java中的抽象類與介面Java抽象
- Java的抽象類與介面理解Java抽象
- Java基礎知識學習筆記總結Java筆記
- java基礎學習之十二:控制流Java
- Java基礎面試知識點總結Java面試
- Java學習關於集合框架的基礎介面--Collection介面Java框架
- Java常見知識點彙總(④)——虛擬函式、抽象函式、抽象類、介面Java函式抽象
- JAVA與tomcat基礎知識JavaTomcat
- Android基礎知識學習Android
- 基礎知識學習筆記筆記
- JavaSE基礎知識學習-----集合Java
- WebAPI基礎知識學習(1)WebAPI
- 【ASM學習】ASM基礎知識ASM
- java抽象類與介面——設計模式Java抽象設計模式
- Java抽象類與介面的區別Java抽象
- 抽象類與介面抽象
- 介面與抽象類抽象