java8新特性之接口的static和default的使用
static方法
java8中為接口新增了一項(xiàng)功能:定義一個(gè)或者更多個(gè)靜態(tài)方法。用法和普通的static方法一樣。
接口中可以定義static方法,可通過接口名稱.方法名()調(diào)用,實(shí)現(xiàn)類不能繼承static方法;
public interface InterfaceA { /** * 靜態(tài)方法,不能被實(shí)現(xiàn)類重寫 */ static void hello() { System.out.println("Hello Java8"); } }
使用方法:
public class Test { public static void main(String[] args) { InterfaceA.hello(); } }
default方法
在接口中,增加default方法, 是為了既有的成千上萬的Java類庫的類增加新的功能, 且不必對這些類重新進(jìn)行設(shè)計(jì)。 比如, 只需在Collection接口中增加default Stream stream(), 相應(yīng)的Set和List接口以及它們的子類都包含此的方法, 不必為每個(gè)子類都重新copy這個(gè)方法。
接口中可以定義default方法,default修飾的方法有方法體,表示這個(gè)方法的默認(rèn)實(shí)現(xiàn),子類可以直接調(diào)用,可以選擇重寫或者不重寫;
public interface Human { /** * 必須被重寫 */ void oldMethod(); /** * 實(shí)現(xiàn)類可以選擇重寫,也可以不重寫 */ default void hello(){ System.out.println("hello Human!"); } }
但是如果實(shí)現(xiàn)類同時(shí)實(shí)現(xiàn)了接口Human和接口Food接口,同時(shí)Food接口中也定義了同名的default方法,那么實(shí)現(xiàn)類中必須重寫兩個(gè)方法。
public interface Food { default void hello(){ System.out.println("hello Food!"); } } public class Person implements Human,Food { @Override public void oldMethod() { } /** * 實(shí)現(xiàn)的多個(gè)接口中有方法簽名相同的default方法時(shí),實(shí)現(xiàn)類必須重寫該方法 */ @Override public void hello() { System.out.println("Human eats Food!"); } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?boot?CommandLineRunner啟動(dòng)任務(wù)傳參實(shí)例詳解
在使用SpringBoot構(gòu)建項(xiàng)目時(shí),我們通常有一些預(yù)先數(shù)據(jù)的加載,下面這篇文章主要給大家介紹了關(guān)于Spring?boot?CommandLineRunner啟動(dòng)任務(wù)傳參的相關(guān)資料,需要的朋友可以參考下2022-06-06Java數(shù)據(jù)結(jié)構(gòu)中雙向鏈表的實(shí)現(xiàn)
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)中雙向鏈表的實(shí)現(xiàn),雙向鏈表是一種常見的數(shù)據(jù)結(jié)構(gòu),它允許在鏈表中的任意位置進(jìn)行高效的插入和刪除操作,需要的朋友可以參考下2022-05-05Java解析pdf格式發(fā)票的代碼實(shí)現(xiàn)
為了減少用戶工作量及誤操作的可能性,需要實(shí)現(xiàn)用戶上傳PDF格式的發(fā)票,系統(tǒng)通過解析PDF文件獲取發(fā)票內(nèi)容,并直接將其寫入表單,以下文章記錄了功能實(shí)現(xiàn)的代碼,需要的朋友可以參考下2024-08-08java hibernate使用注解來定義聯(lián)合主鍵
這篇文章主要介紹了java hibernate使用注解來定義聯(lián)合主鍵的相關(guān)資料,需要的朋友可以參考下2017-01-01java 將 list 字符串用逗號隔開拼接字符串的多種方法
這篇文章主要介紹了java 將 list 字符串用逗號隔開拼接字符串,本文給大家分享四種方法,每種方法通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12java 學(xué)習(xí)筆記(入門篇)_java的安裝與配置
學(xué)習(xí)Java已經(jīng)很長時(shí)間了,由于基礎(chǔ)不好遇到問題就無從下手,所以,打算寫Java的隨手筆記來鞏固基礎(chǔ),加強(qiáng)學(xué)習(xí),接下來講解java的安裝,配置等,感興趣的朋友可以參考下2013-01-01