詳解java接口(interface)在不同JDK版本中的變化
JDK1.7以及以前:
接口(interface)在JDK7及之前的版本對(duì)接口的要求:
接口定義:
- 使用 interface 關(guān)鍵字 。
- 接口中的 所有 成員變量 都默認(rèn)是由 public static final 修飾的。
- 接口中的 所有方法 都默認(rèn)是由 public abstract 修飾的。也可以使用 protected ,但不能用 private 。
- 接口中的 所有方法 都沒(méi)有方法體。
- 接口沒(méi)有構(gòu)造方法。因?yàn)闃?gòu)造方法用于創(chuàng)建對(duì)象。
- 實(shí)現(xiàn)接口的類(lèi) 必須提供接口中所有方法的具體實(shí)現(xiàn)內(nèi)容。
可聲明 靜態(tài)常量、屬性和 抽象方法:
全局變量( public static final )和 抽像方法( public abstract method() )
public interface MyInterface{ static final int x=0; int y=0; //默認(rèn)static final public abstract void method1(); abstract void method2(); void method3(); //默認(rèn) public abstract }
JDK8:
在 JDK7 的基礎(chǔ)上可以聲明 靜態(tài)方法 和 默認(rèn)方法,必須寫(xiě)方法體
public interface MyInterface{ static final int x=0; int y=0; //默認(rèn)static final public abstract void method1(); abstract void method2(); void method3() ; //默認(rèn) public abstract //JDK8:靜態(tài)方法 public static void method4() { System.out.println("靜態(tài)方法"); } //JDK8:默認(rèn)方法 default void method5() { System.out.println("默認(rèn)方法"); } }
JDK9 :
基于 JDK8 增加了私有靜態(tài)方法的聲明
//JDK8: private static 方法 private static void method6(){ System.out.println("private method6"); }
注意:
- 實(shí)現(xiàn)接口的類(lèi)(非抽象類(lèi))必須實(shí)現(xiàn)接口中所有的抽象方法;
- 接口中的靜態(tài)方法,只能使用接口名稱(chēng)調(diào)用 ;
- 接口中 default 方法屬于實(shí)現(xiàn)接口類(lèi)的對(duì)象方法,可以重寫(xiě) ;
- 接口中的 private static 方法只能在接口內(nèi)調(diào)用 ;
- 繼承的接口實(shí)現(xiàn)子接口的抽象方法需要加 dafault 。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java16 JDK安裝并設(shè)置環(huán)境變量的方法步驟
- 教你用JDK編譯Java文件的方法
- 解決IDEA?JDK9沒(méi)有module-info.java的問(wèn)題
- 關(guān)于java中多個(gè)JDK和切換版本介紹
- Java9版本新特性同一個(gè)Jar支持多JDK版本運(yùn)行
- java底層JDK?Logging日志模塊處理細(xì)節(jié)深入分析
- 2021最新Java?JDK1.8的安裝超詳細(xì)教程
- Tomcat?8.5?+mysql?5.7+jdk1.8開(kāi)發(fā)JavaSE的金牌榜小項(xiàng)目
- Java中的OpenJDK使用原理
- Java?JDK內(nèi)置常用接口和深淺拷貝
相關(guān)文章
SpringBoot靜態(tài)資源css,js,img配置方案
這篇文章主要介紹了SpringBoot靜態(tài)資源css,js,img配置方案,下文給大家分享了三種解決方案,需要的朋友可以參考下2017-07-07@ConfigurationProperties加載外部配置方式
這篇文章主要介紹了@ConfigurationProperties加載外部配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Java經(jīng)典排序算法之冒泡排序代碼實(shí)例
這篇文章主要介紹了Java經(jīng)典排序算法之冒泡排序代碼實(shí)例,相鄰兩元素進(jìn)行比較,如過(guò)左側(cè)元素大于右側(cè)元素,則進(jìn)行交換,每完成一次循環(huán)就將最大元素排在最后,下一次循環(huán)是將其它的數(shù)進(jìn)行類(lèi)似操作,需要的朋友可以參考下2023-11-11Java基礎(chǔ)之String類(lèi)使用與字符串比較
String類(lèi)代表字符串,java程序中的所有字符串文字(例如"abc")都被實(shí)現(xiàn)為此類(lèi)的實(shí)例。本文將詳解String類(lèi)的使用,以及如何進(jìn)行字符串比較2022-08-08使用Spring事件機(jī)制實(shí)現(xiàn)異步的方法
這篇文章主要介紹了使用Spring事件機(jī)制實(shí)現(xiàn)異步的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06SpringBoot項(xiàng)目創(chuàng)建使用+配置文件+日志文件詳解
Spring的出現(xiàn)是為了簡(jiǎn)化 Java 程序開(kāi)發(fā),而 SpringBoot 的出現(xiàn)是為了簡(jiǎn)化 Spring 程序開(kāi)發(fā),這篇文章主要介紹了SpringBoot項(xiàng)目創(chuàng)建使用+配置文件+日志文件,需要的朋友可以參考下2023-02-02Java同步鎖synchronized用法的最全總結(jié)
這篇文章主要介紹了Java同步鎖synchronized用法的最全總結(jié),需要的朋友可以參考下,文章詳細(xì)講解了Java同步鎖Synchronized的使用方法和需要注意的點(diǎn),希望對(duì)你有所幫助2023-03-03