學習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抽象
- 【Java面試題-基礎知識02】Java抽象類和介面六連問?Java面試題抽象
- Java 基礎學習總結(一)抽象類和介面Java抽象
- Java基礎-抽象類和介面Java抽象
- Java:面試題:抽象類與介面的區別Java面試題抽象
- Java基礎10 介面的繼承與抽象類Java繼承抽象
- Java基礎知識面試題Java面試題
- Java 基礎面試知識點Java面試
- JAVA基礎之三-介面和抽象類Java抽象
- java基礎總結(面試高頻問題)十:java抽象類和介面的區別Java面試抽象
- Java基礎面試知識點總結Java面試
- 【Java面試】Java基礎知識面試題—2020最新版!Java面試題
- Android面試之——數學基礎知識Android面試
- 介面測試之基礎知識
- 介面測試--基礎小知識
- 整理Java基礎知識--Calendar 類Java
- 十二、pytorch的基礎知識PyTorch
- JavaSE基礎知識分享(十二)Java
- java中的抽象類與介面Java抽象
- Java的抽象類與介面理解Java抽象
- Java總結-抽象類與介面Java抽象
- Java常見知識點彙總(④)——虛擬函式、抽象函式、抽象類、介面Java函式抽象
- Android基礎知識學習Android
- 抽象類與介面抽象
- 夯實Java基礎系列6:一文搞懂抽象類和介面,從基礎到面試題,揭秘其本質區別!Java抽象面試題
- 介面(抽象類)與後期靜態繫結學習抽象
- 整理Java基礎知識--Number&Math類Java
- JS基礎知識(覆蓋JS基礎面試題)JS面試題
- JAVA基礎之介面與內部類Java
- Java的抽象類 & 介面Java抽象
- 基礎知識學習筆記筆記
- 【Java基礎知識】Java陣列與集合Java陣列
- Java中的介面與抽象類詳解Java抽象
- Java中抽象類與介面的區別Java抽象
- 夯實Java基礎系列6:一文搞懂抽象類和介面,從基礎到面試題,揭祕其本質區別!Java抽象面試題
- iOS | 面試知識整理 - OC基礎 (一)iOS面試
- Python 必備面試基礎知識-3Python面試