Java8的default和static關(guān)鍵字的使用講解
1. default和static關(guān)鍵字
a.default 用在接口中, 為該接口的實(shí)現(xiàn)類(lèi)的方法. --> 不能通過(guò)接口直接調(diào)用.
static 也是用在接口中, 同Class中的static方法一樣, 是類(lèi)級(jí)別的方法, 而不是對(duì)象的方法. --> 可以通過(guò)接口直接調(diào)用.
b.一個(gè)接口可以有多個(gè)default方法, 也可以有多個(gè)static方法.
2. default 在使用中的注意事項(xiàng)
如下面的例子
有兩個(gè)接口, InterA和InterB, 都有一個(gè)方法, 為defaultFunction(),ClassA僅僅為InterA的實(shí)現(xiàn)類(lèi). 那么沒(méi)有報(bào)錯(cuò). 當(dāng)調(diào)用ClassA的defaultFunction()時(shí),會(huì)自動(dòng)調(diào)取InterA的方法.
但是ClassAB同時(shí)為InterA和InterB的實(shí)現(xiàn)類(lèi).當(dāng)調(diào)用ClassAB的defaultFunction()時(shí),不知道該調(diào)取哪個(gè)接口的了,所以,ClassAB需要自己重寫(xiě)這個(gè)方法.

3. Static則和default不同,

打印結(jié)果

4. 源碼
public class DefaultDemoApp {
public static void main(String[] args) {
new ClassA().defaultFunction();
new ClassAB().defaultFunction();
}
}
interface InterA {
default void defaultFunction() {
System.out.println("This is A defaultFunction");
}
static void staticFunction() {
System.out.println("This is A status function");
}
}
interface InterB {
default void defaultFunction() {
System.out.println("This is B defaultFunction");
}
static void staticFunction() {
System.out.println("This is B status function");
}
}
class ClassA implements InterA {
}
class ClassAB implements InterA, InterB {
@Override
public void defaultFunction() {
InterB.staticFunction();
}
}
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Java并發(fā)編程this逃逸問(wèn)題總結(jié)
本篇文章給大家詳細(xì)分析了Java并發(fā)編程this逃逸的問(wèn)題分享,對(duì)此有需要的朋友參考下。2018-02-02
Activiti開(kāi)發(fā)環(huán)境的配置
本篇文章主要內(nèi)容介紹了Activiti開(kāi)發(fā)環(huán)境的配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
java多線(xiàn)程編程之從線(xiàn)程返回?cái)?shù)據(jù)的兩種方法
從線(xiàn)程中返回?cái)?shù)據(jù)和向線(xiàn)程傳遞數(shù)據(jù)類(lèi)似。也可以通過(guò)類(lèi)成員以及回調(diào)函數(shù)來(lái)返回?cái)?shù)據(jù)。但類(lèi)成員在返回?cái)?shù)據(jù)和傳遞數(shù)據(jù)時(shí)有一些區(qū)別,下面讓我們來(lái)看看它們區(qū)別在哪2014-01-01
Can''t use Subversion command line client:svn 報(bào)錯(cuò)處理
這篇文章主要介紹了Can't use Subversion command line client:svn 報(bào)錯(cuò)處理的相關(guān)資料,需要的朋友可以參考下2016-09-09
Java?中?Class?Path?和?Package的使用詳解
這篇文章主要介紹了Java?中?Class?Path和Package的使用詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08
Java線(xiàn)程之線(xiàn)程同步synchronized和volatile詳解
這篇文章主要介紹了Java線(xiàn)程之線(xiàn)程同步synchronized和volatile詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11

