1. 程式人生 > >[Java] 抽象類和接口

[Java] 抽象類和接口

static int 所有 pub .com 成員變量 抽象類 對象 概念

目錄

  1. 抽象類
  2. 接口

1抽象類

定義

如果一個類沒有足夠的信息來描述一個具體的對象,而需要其他具體的類來實例化的類,我們稱它為抽象類。

抽象類的特點

  • 抽象類不能被實例化,但可以引用子類對象。
  • 子類必須實現抽象類的抽象方法。如果子類也是抽象類,可以不實現抽象類的方法。
  • 抽象類中可以包含具體的方法,也可以包含抽象的方法。
  • 子類中的抽象方法不能與父類的抽象方法同名。
  • abstract 不能與final 並列修飾同一個類。
  • abstract 不能與private、static、final、或native並列修飾一個方法。

示例

public abstract class Test{
    // 屬性
public int var = 0; //抽象方法 public abstract void hello(); //具體方法 public void hello2{ System.out.println("Hello2"); } }

2 接口

定義

  1. 接口並不是類,編寫接口的方式和類很相似,但是它們屬於不同的概念。類描述對象的屬性和方法。接口則包含類要實現的方法。
  2. 除非實現接口的類是抽象類,否則該類要定義接口中的所有方法。
  3. 接口無法被實例化,但是可以被實現。抽象類可以繼承接口但不實現接口中的類。
  4. 接口類型可以用來聲明一個變量。作為一個引用。
  5. 接口描述的是一個具體的對象的局部。

接口特性

  • 接口中每一個方法也是隱式抽象的,接口中的方法會被隱式地被指定為public abstract(只能是public abstract,其他修飾符都會報錯)。
  • 接口中可以含有變量,但是接口中的變量會被隱式地被指定為public static final 變量(並且只能是public,用private修飾會便會報錯)
  • 接口中的方法不能在接口中實現,只能由實現該接口的類來實現接口中的方法。

示例

public interface Test{
    // 屬性
    public static final int var = 1;
    // 方法
    public
void hello(); // 隱式定義為public abstract }

抽象類和接口的區別

  1. 抽象類中的方法可以有方法體,就是能實現方法的具體功能,但是接口中的方法不行。
  2. 抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是public static final 類型的。
  3. 接口中不能包含靜態代碼塊以及靜態方法,而抽象類是可以有靜態代碼塊和靜態方法的。
  4. 一個類只能繼承一個抽象類,而一個類可以實現多個接口。

參考:

http://www.runoob.com/java/java-interfaces.html

[Java] 抽象類和接口