Java中抽象類和介面的區別
在Java中,抽象是透過抽象類和介面實現的。兩者都包含抽象方法,子類或實現類必須實現這些方法。以下是抽象類和介面之間的一些重要區別。
| 序號 | 關鍵點 | 抽象類 | 介面 |
|---|---|---|---|
| 1 | 支援的方法 | 抽象類可以同時具有抽象方法和具體方法。 | 介面只能包含抽象方法。從Java 8開始,它可以包含預設方法和靜態方法。 |
| 2 | 多重繼承 | 不支援多重繼承。 | 介面支援多重繼承。 |
| 3 | 支援的變數 | 支援final、非final、static和非static變數。 | 只允許static和final變數。 |
| 4 | 實現 | 抽象類可以實現介面。 | 介面不能實現介面,它可以擴充套件介面。 |
| 5 | 關鍵字 | 抽象類使用abstract關鍵字宣告。 | 介面使用interface關鍵字宣告。 |
| 6 | 繼承 | 抽象類可以使用extends關鍵字繼承另一個類並實現介面。 | 介面只能繼承介面。 |
| 7 | 繼承 | 抽象類可以使用extends關鍵字繼承。 | 介面只能使用implements關鍵字實現。 |
| 8 | 訪問許可權 | 抽象類可以具有任何型別的成員,例如private、public。 | 介面只能具有public成員。 |
抽象類與介面示例
public class JavaTester {
public static void main(String args[]) {
Animal tiger = new Tiger();
tiger.eat();
Cat lion = new Lion();
lion.eat();
}
}
interface Animal {
public void eat();
}
class Tiger implements Animal {
public void eat(){
System.out.println("Tiger eats");
}
}
abstract class Cat {
abstract public void eat();
}
class Lion extends Cat{
public void eat(){
System.out.println("Lion eats");
}
}
輸出
Tiger eats Lion eats
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP