1. 程式人生 > >Java學習筆記—抽象類和接口

Java學習筆記—抽象類和接口

compute nal java語言 通過 多個 靜態代碼塊 容易 如果 span

1.抽象類

在Java語言中使用abstrac關鍵字來定義抽象類和抽象方法,抽象方法沒有定義,方法名後面直接跟一個分號,而不是花括號。

public abstract class Employee
{
   private String name;
   private String address;
   private int number;
   
   public abstract double computePay();
   
   //其余代碼
}

抽象類總結:

  1. 抽象類不能被實例化(初學者很容易犯的錯),如果被實例化,就會報錯,編譯無法通過。只有抽象類的非抽象子類可以創建對象。

  2. 抽象類中不一定包含抽象方法,但是有抽象方法的類必定是抽象類。

  3. 抽象類中的抽象方法只是聲明,不包含方法體,就是不給出方法的具體實現也就是方法的具體功能。

  4. 構造方法,類方法(用static修飾的方法)不能聲明為抽象方法。

  5. 抽象類的子類必須給出抽象類中的抽象方法的具體實現,除非該子類也是抽象類。

2.接口

Interface關鍵字用來聲明一個接口。

/* 文件名 : Animal.java */
interface Animal {
   public void eat();
   public void travel();
}

接口總結:

  1. 一個接口能繼承另一個接口,和類之間的繼承方式比較相似。接口的繼承使用extends關鍵字,子接口繼承父接口的方法
  2. 接口的方法聲明必須是 public abstract ,即便不寫默認也是
  3. 接口裏面不能包含方法具體實現
  4. 類實現接口時,除非實現接口的類是抽象類,否則該類要定義接口中的所有方法。
  5. 接口裏面只能聲明 public static final 修飾的變量
  6. 接口不能被實例化,但是可以被實現類創建

3.抽象類與接口的區別

  • 抽象類中的方法可以有方法體,能實現方法的具體功能,但是接口中的方法不行。
  • 抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是 public static final 類型的。
  • 接口中不能含有靜態代碼塊以及靜態方法(用 static 修飾的方法),而抽象類是可以有靜態代碼塊和靜態方法。
  • 一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。

Java學習筆記—抽象類和接口