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
廣告