Java學習筆記—抽象類和接口
阿新 • • 發佈:2017-07-08
compute nal java語言 通過 多個 靜態代碼塊 容易 如果 span
1.抽象類
在Java語言中使用abstrac關鍵字來定義抽象類和抽象方法,抽象方法沒有定義,方法名後面直接跟一個分號,而不是花括號。
public abstract class Employee { private String name; private String address; private int number; public abstract double computePay(); //其余代碼 }
抽象類總結:
-
抽象類不能被實例化(初學者很容易犯的錯),如果被實例化,就會報錯,編譯無法通過。只有抽象類的非抽象子類可以創建對象。
-
抽象類中不一定包含抽象方法,但是有抽象方法的類必定是抽象類。
-
抽象類中的抽象方法只是聲明,不包含方法體,就是不給出方法的具體實現也就是方法的具體功能。
-
構造方法,類方法(用static修飾的方法)不能聲明為抽象方法。
-
抽象類的子類必須給出抽象類中的抽象方法的具體實現,除非該子類也是抽象類。
2.接口
Interface關鍵字用來聲明一個接口。
/* 文件名 : Animal.java */ interface Animal { public void eat(); public void travel(); }
接口總結:
- 一個接口能繼承另一個接口,和類之間的繼承方式比較相似。接口的繼承使用extends關鍵字,子接口繼承父接口的方法
- 接口的方法聲明必須是 public abstract ,即便不寫默認也是
- 接口裏面不能包含方法具體實現
- 類實現接口時,除非實現接口的類是抽象類,否則該類要定義接口中的所有方法。
- 接口裏面只能聲明 public static final 修飾的變量
- 接口不能被實例化,但是可以被實現類創建
3.抽象類與接口的區別
- 抽象類中的方法可以有方法體,能實現方法的具體功能,但是接口中的方法不行。
- 抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是 public static final 類型的。
- 接口中不能含有靜態代碼塊以及靜態方法(用 static 修飾的方法),而抽象類是可以有靜態代碼塊和靜態方法。
- 一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。
Java學習筆記—抽象類和接口