JDK1 8新特性 介面中的預設方法與靜態方法

2021-10-02 11:19:18 字數 1093 閱讀 2001

在jdk1.8之後,介面中可以有預設方法

inte***ce

myinte***ce1

}

但是這會出現乙個問題,就是若乙個類它即繼承另乙個類,又實現了乙個介面,而那個介面裡面的預設方法的方法名和引數與繼承類中的方法名和引數相同,那最後呼叫方法是到底是呼叫誰的方法。這裡就提到乙個原則:

可以看到,結果輸出的是嘿嘿嘿,呼叫的是父類中的方法。

下面,我們再來看另外一種情況:

如果乙個類分別實現了兩個介面,但是其中乙個父介面提供乙個預設方法,而另乙個介面也提供了乙個具有相同名稱個引數列表 的方法(不管方法是否是預設方法),那麼必須覆蓋該方法來解決衝突,不然就會報錯。

我們可以看到**出現了錯誤,以下是解決錯誤之後的**

inte***ce

myinte***ce1

}inte***ce

myinte***ce2

}class

subclass2

implements

myinte***ce1

,myinte***ce2

@override

public string getname()

}

在jdk1.8之後,介面中可以有靜態方法

inte***ce

myinte***ce1

static string show()

}

JDK1 8的新特性

jdk1.8之前的介面不可以有方法體,但從jdk1.8開始,介面中的方法可以帶有方法體為什麼要新增這個特性?介面就是為了定義乙個標準,這個標準要求所有的實現類實現這些抽象方法。但存在某些方法,所有的實現類 都是一樣的,索性就把這些 挪到介面中。使用的方法?通過default來修飾這個方法public...

JDK1 8新特性函式式介面

對於只有乙個抽象方法的介面,需要這種介面的物件,就可以提供乙個lambda表示式。這種介面稱為函式式介面 functional inte ce 在定義函式式介面的時候可以加入 functionalinte ce註解來修飾該介面 documented retention retentionpolicy...

JDK1 8新特性 函式式介面

只有乙個抽象方法 object類中的方法除外 的介面是函式式介面 supplier代表乙個輸出 consumer代表乙個輸入 biconsumer代表兩個輸入 function代表乙個輸入,乙個輸出 一般輸入和輸出是不同型別的 unaryoperator代表乙個輸入,乙個輸出 輸入和輸出是相同型別的...