介面和抽象類的特點與使用

2021-10-01 15:45:49 字數 1299 閱讀 6390

介面中的方法會被隱式的指定為 public abstract(使用其他修飾符會報錯)

介面中所有變數會被隱式的指定為 public static final 變數(使用其他修飾符會報錯)

jdk 8 後,介面中可以加入 static 和 default 修飾的非抽象方法,它們分別使用類名 和其實現的子類 呼叫

抽象類不能被例項化,所以抽象類必須被繼承,才能被使用

抽象類中不一定包含抽象方法,但是有抽象方法的類必定是抽象類

繼承抽象類的子類一定會用到父抽象類的構造器。抽象類預設有空參構造器,其繼承的子類會預設使用空參構造器。如果抽象類中只有含引數的構造器,那麼其繼承的子類的構造器中,必須要使用 super(…) 指明抽象類的構造器

介面中的抽象方法,對於實現它的子類,都要求重寫它的抽象方法。

當在乙個介面中,加入乙個抽象方法時,他的子類都必須去實現新的抽象方法。

抽象類中既可以有抽象方法,也可以有非抽象方法。對於繼承它的子類,具有它的非抽象方法,但必須重寫它的抽象方法。

當在乙個抽象類中,加入乙個非抽象方法時,那麼它的所有子類都同時具有了這個新方法。

介面和抽象類的配合使用,就可以實現缺省適配置模式

用抽象類實現介面,在介面中,定義出抽象方法,在抽象類,實現預設的抽象方法。

對於其所有子類,繼承抽象類,如果需要子類完成的方法,不在抽象類中實現,則所有子類都需要去實現抽象方法;如果不需要子類去實現的方法,可以在介面中定義、在抽象類中實現,則子類就具有了這個新方法。

inte***ce

inte***c

abstract

class

abstrac

implements

inte***c

//可以對方法進行實現

public string methodab()

//可以使用抽象方法

abstract

public string methodab1()

;}class

myclass

extends

abstrac

implements

inte***c

//必須實現繼承的抽象類中的抽象方法

@override

public string methodab1()

//可以使用抽象類中定義好的方法

public string mymethod()

}

介面與抽象類的使用可參考

介面和抽象類的使用

介面必須有子類,子類依靠implements關鍵字可以同時實現多個介面。介面的子類 如果不是抽象類 必須實現介面中的全部抽象方法,才能實現例項化物件。利用子類實現物件的例項化,介面可以實現多型性。介面類除了資料成員 賦初值且值不可更改,關鍵字final可以省略 還有抽象方法 關鍵字abstract可...

抽象類和抽象方法的特點

抽象類和抽象方法的特點如下。1.抽象類和抽象方法都通過abstract關鍵字來修飾 2.抽象類不能例項化。抽象類中可以沒有,有乙個或多個抽象方法,甚至全部方法都可以是抽象方法。3.抽象方法只有方法宣告,沒有方法實現,有抽象方法的類必須宣告為抽象類。子類必須重寫所有的抽象方法才能例項化,否則子類還是乙...

抽象方法 抽象類 介面 介面和抽象類的區別

某個父類只知道子類因該包含什麼樣的方法,無法知道這些子類如何實現這些方法。抽象類包含該方法但沒有對該方法的具體實現。有抽象方法的類只能被定義為抽象類,抽象類裡可以沒有抽象方法。抽象方法和抽象類的規則 public abstract class shape private string color p...