java中抽象類和接口的區別

說道他們的區別,首先讓我們先了解一下什麼是接口,什麼是抽象類。

1.接口:

是抽象方法的集合,接口通常以interface來聲明。

public interface Demo{
   public void method();
}

2.抽象類:

使用了關鍵字abstract修飾的類,就是抽象類。

public abstract class Demo{
   public abstract void method();
}

然後再讓我們來看看他們的區別:

3相同點:

a.他們都不能被直接實例化,都必須通過繼承實現其抽象方法。

b.都是面向抽象編程的技術基礎,實現了諸多的設計模式。

4.不同點:

a.類是單繼承,多實現(接口);接口是多繼承。

(1)類的單繼承

public class Son extends Father{


}
(2)類的多實現

public class Son implements Father,Mother,..{


}
(3)接口的多繼承
public interface Son extends Father,Mother,..{


}

b.抽象類中可以有抽象方法,也可以沒有抽象方法。所以類中如果有抽象方法,就得是抽象類;是抽象類,但不一定有抽象方法。

而接口中所有的方法都是默認爲抽象方法的。

c.抽象類中包括成員變量和非abstract的成員方法,而接口中只存在默認的public static final 的成員變量(在interface中一般不定義成員變量)和默認的public abstract的成員方法。

d.接口中沒有構造方法,而抽象類中有構造方法(提供給子類的)。

e.接口如果被類實現了,必須重寫裏面所有的方法;如果是被抽象類實現了,就沒必要重寫所有方法。

 抽象類如果被繼承,一定要重寫裏面所有被abstract關鍵字修飾的方法。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章