1.首先,從基礎語法上來說接口使用interface 而抽象類使用abstract
2.實現接口的關鍵字為implements,繼承抽象類的關鍵字為extends。一個類可以實現多個接口,但一個類只能繼承一個抽象類。所以,使用接口可以間接地實現多重繼承。
3.接口所有的成員方法都是被public abstract修飾的抽象方法,不能有方法的實現(JDK1.8之前),java 1.8中可以定義default方法體,而抽象類可以有抽象方法與實現。
4.接口的成員變量默認是靜態常量,必須賦初值,不能夠修改。抽象類的成員變量可以是普通變量。
5.抽象類中可以定義構造方法,接口則不能。
6.抽象類可以有 main 方法,並且我們能運行它;接口不能有 main 方法。什么時候用接口或抽象類?
-
如果你擁有一些方法並且想讓它們中的一些有默認實現,那么就使用抽象類
-
如果想實現多繼承,則必須使用接口;java不支持多繼承,子類不能繼承多個類,但是可以實現多個接口,因此可以用接口來解決。
-