Jdk8新特性之介面新增方法

2021-10-04 09:18:10 字數 1468 閱讀 9464

jdk 8介面增強介紹

inte***ce

介面名

jdk 8對介面的增強,介面還可以有預設方法和靜態方法

jdk 8的介面:

inte***ce

介面名

介面引入預設方法的背景在jdk 8以前介面中只能有抽象方法。存在以下問題:

如果給介面新增抽象方法,所有實現類都必須重寫這個抽象方法。不利於介面的擴充套件。

inte***ce

a class b implements

a

//介面新增抽象方法,所有實現類都需要去重寫這個方法

@override

public

void

test2()

}class c implements

a

//介面新增抽象方法,所有實現類都需要去重寫這個方法

@override

public

void

test2()

}

以前假如乙個介面有很多的抽象方法的時候,可以寫乙個裝飾類

例如,jdk 8 時在map介面中增加了 foreach 方法:

介面預設方法的使用

方式一:實現類直接呼叫介面預設方法

方式二:實現類重寫介面預設方法

public

class

demo02usedefaultfunction

}inte***ce

aa }

//預設方法使用方式一: 實現類可以直接使用

class bb implements

aa //

預設方法使用方式二: 實現類可以重寫介面預設方法

class cc implements

aa }

介面靜態方法為了方便介面擴充套件,jdk 8為介面新增了靜態方法。

public

class

demo03usestaticfunction

}inte***ce

aaa

}class bbb implements

aaa

}

介面預設方法和靜態方法的區別1. 預設方法通過例項呼叫,靜態方法通過介面名呼叫。

2. 預設方法可以被繼承,實現類可以直接使用介面預設方法,也可以重寫介面預設方法。

3. 靜態方法不能被繼承,實現類不能重寫介面靜態方法,只能使用介面名呼叫。

如果方法要被繼承或者重寫就用預設方法,如果不需要被繼承就使用靜態方法

jdk8 新特性之 介面預設方法

package inte cetest todo 介面的預設方法 使用 default 關鍵字使 inte ce 預設實現方法,static 作用是使其方法可以被其他類直接呼叫,如注入到 spring容器中,不需要新增static author ws mail 1720696548 qq.com d...

JDK8新特性之方法引用

方法引用是只需要使用方法的名字,而具體呼叫交給函式式介面,需要和lambda表示式配合使用。如 listlist arrays.aslist a b c list.foreach str system.out.print str list.foreach system.out print 上面兩種寫...

JDK8新特性之方法引用

方法引用是只需要使用方法的名字,而具體呼叫交給函式式介面,需要和lambda表示式配合使用。如 list list arrays.aslist a b c list.foreach str system.out.print str list.foreach system.out print 上面兩種...