區別如下:
1、繼承關係:abstract class抽象類可以繼承一個類和實現多個介面;子類只可以繼承一個抽象類。Interface介面只可以繼承介面(一個或多個);子類可以實現多個介面。
2、訪問修飾符:abstract class抽象方法可以有public、protected和default這些修飾符。Interface介面方法預設修飾符是public。你不可以使用其它修飾符。
3、方法實現:abstract class可定義構造方法,可以有抽象方法和具體方法。Interface介面完全是抽象的,沒構造方法,且方法都是抽象的,不存在方法的實現。
4、實現方式:abstract class子類使用extends關鍵字來繼承抽象類。如果子類不是抽象類的話,它需要提供抽象類中所有宣告的方法的實現。Interface子類使用關鍵字implements來實現介面。它需要提供介面中所有宣告的方法的實現。
5、作用:abstract class把相同的東西提取出來,即重用。Interface為了把程式模組進行固化的契約,是為了降低偶合。
擴充套件資料
abstract class的定義:
含有abstract修飾符的class即為抽象類,abstract 類不能建立的例項物件。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。
abstract class類中定義抽象方法必須在具體(Concrete)子類中實現,所以,不能有抽象構造方法或抽象靜態方法。如果的子類沒有實現抽象父類中的所有抽象方法,那麼子類也必須定義為abstract型別。
interface的定義:
介面(interface)可以說成是抽象類的一種特例,介面中的所有方法都必須是抽象的。介面中的方法定義預設為public abstract型別,介面中的成員變數型別預設為public static final。
區別如下:
1、繼承關係:abstract class抽象類可以繼承一個類和實現多個介面;子類只可以繼承一個抽象類。Interface介面只可以繼承介面(一個或多個);子類可以實現多個介面。
2、訪問修飾符:abstract class抽象方法可以有public、protected和default這些修飾符。Interface介面方法預設修飾符是public。你不可以使用其它修飾符。
3、方法實現:abstract class可定義構造方法,可以有抽象方法和具體方法。Interface介面完全是抽象的,沒構造方法,且方法都是抽象的,不存在方法的實現。
4、實現方式:abstract class子類使用extends關鍵字來繼承抽象類。如果子類不是抽象類的話,它需要提供抽象類中所有宣告的方法的實現。Interface子類使用關鍵字implements來實現介面。它需要提供介面中所有宣告的方法的實現。
5、作用:abstract class把相同的東西提取出來,即重用。Interface為了把程式模組進行固化的契約,是為了降低偶合。
擴充套件資料
abstract class的定義:
含有abstract修飾符的class即為抽象類,abstract 類不能建立的例項物件。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。
abstract class類中定義抽象方法必須在具體(Concrete)子類中實現,所以,不能有抽象構造方法或抽象靜態方法。如果的子類沒有實現抽象父類中的所有抽象方法,那麼子類也必須定義為abstract型別。
interface的定義:
介面(interface)可以說成是抽象類的一種特例,介面中的所有方法都必須是抽象的。介面中的方法定義預設為public abstract型別,介面中的成員變數型別預設為public static final。