深入理解Java8新特性之接口中的默認方法和靜態(tài)方法
1.接口中的默認方法和靜態(tài)方法
Java 8中允許接口中包含具有具體實現(xiàn)的方法,該方法稱為 “默認方法” ,默認方法使用 default 關鍵字修飾。
接口默認方法的 ” 類優(yōu)先 ” 原則。若一個接口中定義了一個默認方法,而另外一個父類或接口中又定義了一個同名的方法時
- 選擇父類中的方法。如果一個父類提供了具體的實現(xiàn),那么接口中具有相同名稱和參數(shù)的默認方法會被忽略。
- 接口沖突。如果一個父接口提供一個默認方法,而另一個接口也提供了一個具有相同名稱和參數(shù)列表的方法(不管方法是否是默認方法),那么必須覆蓋該方法來解決沖突。
同時,Java8 中,允許接口中添加靜態(tài)方法(static)。
2.應用舉例
package com.szh.java8;
/**
*
*/
interface InterfaceOne {
default String getMessage() {
return "哈哈哈";
}
static void show() {
System.out.println("接口中的靜態(tài)方法");
}
}
interface InterfaceTwo {
default String getMessage() {
return "嘿嘿嘿";
}
}
class ClassOne {
public String getMessage() {
return "呵呵呵";
}
}
class SubClass1 extends ClassOne implements InterfaceOne {
}
class SubClass2 extends ClassOne implements InterfaceOne,InterfaceTwo {
}
class SubClass3 implements InterfaceOne,InterfaceTwo {
@Override
public String getMessage() {
return InterfaceTwo.super.getMessage();
}
}
public class TestClass {
public static void main(String[] args) {
SubClass1 sub1 = new SubClass1();
System.out.println(sub1.getMessage());
SubClass2 sub2 = new SubClass2();
System.out.println(sub2.getMessage());
SubClass3 sub3 = new SubClass3();
System.out.println(sub3.getMessage());
InterfaceOne.show();
}
}
雖然SubClass1類繼承了ClassOne、同時實現(xiàn)了InterfaceOne,由于類優(yōu)先原則,所以這里執(zhí)行的是ClassOne類中的getMessage方法。
SubClass2與SubClass1是同樣的道理。
而SubClass3就不一樣了,它沒有繼承ClassOne這個類,而是同時實現(xiàn)了InterfaceOne、InterfaceTwo這兩個接口,那么它就必須選擇其中一個來對默認方法進行實現(xiàn)(覆蓋 / 重寫),實現(xiàn)的是哪個接口,相應的就執(zhí)行哪個接口的默認方法。
最后接口中的靜態(tài)方法就和類中的靜態(tài)方法一樣,直接 接口名.靜態(tài)方法名 就可以調用了。

到此這篇關于深入理解Java8新特性之接口中的默認方法和靜態(tài)方法的文章就介紹到這了,更多相關Java 新特性內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java后臺發(fā)起get請求獲取響應數(shù)據(jù)
這篇文章主要為大家詳細介紹了java后臺發(fā)起get請求獲取響應數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08
在Java的Hibernate框架中使用SQL語句的簡單介紹
這篇文章主要介紹了在Java的Hibernate框架中使用SQL語句的方法,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2016-01-01
Java try catch finally異常處理組合詳解
這篇文章主要介紹了Java try catch finally異常處理組合詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-05-05
springboot 整合 nacos 配置實現(xiàn)多個環(huán)境不同配置
本文介紹了Nacos配置中心的優(yōu)勢,包括與Apollo的性能對比,Nacos服務端的安裝與配置,以及如何在SpringBoot項目中集成Nacos進行多環(huán)境配置,提供了詳細的步驟,包括下載、安裝、配置中心的創(chuàng)建和項目集成,旨在幫助開發(fā)者更好地使用Nacos進行項目配置管理2024-09-09
Spring Kafka中@KafkaListener注解的參數(shù)與使用小結
@KafkaListener注解為開發(fā)者提供了一種聲明式的方式來定義消息監(jiān)聽器,本文主要介紹了Spring Kafka中@KafkaListener注解的參數(shù)與使用小結,具有一定的參考價值,感興趣的可以了解一下2024-06-06

