接口和抽象有什麼區別?
接口和抽象是 Java 面向對象設計的兩個基礎機制。
接口是對行爲的抽象,它是抽象方法的集合,利用接口可以達到API 定義和實現分離的目的。
- 接口不能實例化,
- 接口不能包含任何非常量成員,任何 field 隱含 public field final的意義
- 非靜態方式實現,要麼是抽象方法,要麼是靜態方法。
抽象類不能實例化,用 abstract 關鍵字修飾 class, 其主要目的是代碼重用。
- 抽象類和普通 Java 類在形式上沒有太大區別。 可以有一個或者多個抽象方法,- 抽象類大多用於抽取 Java 類共用方法實現或者共同成員變量。然後通過繼承的方式到達代碼複用的目的。
接口和抽象區別
- 接口 Java 類實現 interface 使用 implements 關鍵詞
- 繼承 抽象類是使用 extends 關鍵詞
- 支持多重繼承:接口支持;抽象類不支持;類不支持;
- 支持抽象函數:接口語義上支持;抽象類支持;類不支持;
- 允許函數實現:接口不允許;抽象類支持;類允許;
- 允許實例化:接口不允許;抽象類不允許;類允許;
- 允許部分函數實現:接口不允許;抽象類允許;類不允許。
- 定義的內容:接口中只能包括public函數以及public static final常量;抽象類與類均無任何限制。
- 使用時機:當想要支持多重繼承,或是爲了定義一種類型請使用接口;
當打算提供帶有部分實現的“模板”類,而將一些功能需要延遲實現請使用抽象類;當你打算提供完整的具體實現請使用類。
public class ArrayLis<E> extends AbsractLis<E&