jdk 8介面增強介紹
inte***cejdk 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介面靜態方法為了方便介面擴充套件,jdk 8為介面新增了靜態方法。class
demo02usedefaultfunction
}inte***ce
aa }
//預設方法使用方式一: 實現類可以直接使用
class bb implements
aa //
預設方法使用方式二: 實現類可以重寫介面預設方法
class cc implements
aa }
public介面預設方法和靜態方法的區別1. 預設方法通過例項呼叫,靜態方法通過介面名呼叫。class
demo03usestaticfunction
}inte***ce
aaa
}class bbb implements
aaa
}
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 上面兩種...