Java 中接口 interface 实例介绍
接口(interface)
有時必須從幾個類中派生出一個子類,繼承它們所有的屬性和方法。但是,Java不支持多重繼承。有了接口,就可以得到多重繼承的效果。
接口(interface)是抽象方法和常量值的定義的集合。
從本質上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現。
接口定義舉例
public interface Runner int id = 1public void start()public void run()public void stop() }案例:
蝙蝠會飛,又會用牙齒咬
首先定義一個飛行的接口:
package cn.com.Classwork190124;/*如果一個類中,既有抽象方法,又有非抽象方法,那么該類只能定義為抽象類,不能定義為接口如果一個類中,只有抽象方法,沒有非抽象方法,那么該類可以定義為接口一般就定義為接口定義一個接口,使用interface關鍵字 接口,類,枚舉,注解等都是java中的類型接口中所有的方法,都是抽象方法所以也可以說,接口就是一個特殊的抽象類接口中除了定義方法外,還可以定義成員變量特點;方法和屬性默認都是public修飾,也可以使用protected,但不能用private所有的屬性都是靜態的常量,默認省略了static和final修飾符,屬性的值必須實例化(初始化)*/public interface Flyable {public final int wingsNumber = 2;public abstract void fly();}接著定義一個咬人的接口:
package cn.com.Classwork190124;public interface Bitable {public int teethNumber = 0;public abstract void bite(); }最后定義蝙蝠類去實現這兩個接口:
package cn.com.Classwork190124;/*在JAVA中,一個類無法繼承自多個類,但是可以實現多個接口,使用關鍵字implements多個接口之間使用“,”隔開 多個接口之間,沒有先后順序這個類叫做實現類,這個類必須實現所有接口的所有方法*/public class Bat implements Flyable,Bitable {@Overridepublic void bite() {System.out.println("吸血");}@Overridepublic void fly() {System.out.println("用翅膀飛");}public static void main(String[] args) {System.out.println(Flyable.wingsNumber);} }接口的特點:
用 interface 來定義。
接口中的所有成員變量都默認是由public static final修飾的。
接口中的所有方法都默認是由public abstract修飾的。
接口沒有構造方法。構造方法用于創建對象
實現接口的類中必須提供接口中所有方法的具體實現內容。
多個無關的類可以實現同一個接口
一個類可以實現多個無關的接口
與繼承關系類似,接口與實現類之間存在多態性
接口也可以繼承另一個接口,使用extends關鍵字。
實現接口的類中必須提供接口中所有方法的具體實現內容。
多個無關的類可以實現同一個接口
一個類可以實現多個無關的接口
與繼承關系類似,接口與實現類之間存在多態性
定義Java類的語法格式:
< modifier> class < name> [extends < superclass>]
[implements < interface> [,< interface>]* ] {
< declarations>*
}
此外,接口還常常被用來當做定義常量的集合:
案例:
如果實現接口的類中沒有實現接口中的全部方法,必須將此類定義為抽象類。
接口也可以繼承另一個接口,使用extends關鍵字
interface MyInterface {String s=“MyInterface”;public void absM1(); }interface SubInterface extends MyInterface {public void absM2(); }public class SubAdapter implements SubInterface {public void absM1(){System.out.println(“absM1”);}public void absM2(){System.out.println(“absM2”);} }JDK8新增接口中抽象方法的默認實現 使用default關鍵字
package cn.com.Classwork190124;public interface Bitable {public int teethNumber = 0;//public abstract void bite();/*java新增接口中抽象方法的默認實現 使用default關鍵字加上default關鍵字后需要實現方法體子類中成為覆蓋該方法*/default void bite() {System.out.println("用牙齒咬");} }注意:如果實驗發現明明用的是jdk8卻報錯為:Extension methods are not supported at language level '6’ 請進入idea file->project structure 在project選項卡下將圖中被圈的部分改為8即可(language level不能比項目的jdk版本高)。
還可以附帶static的默認實現方法
package cn.com.Classwork190124;/*接口也經常用來被定義常量的集合 默認省略public static final定義更簡單,使用更方便*/public interface Power {int vol = 220;double hz = 50.0;/*jdk8新增功能*/public static void lightOn(){System.out.println("默認的點燈方法");}public static void main(String[] args) {Power.lightOn();} }?
總結
以上是生活随笔為你收集整理的Java 中接口 interface 实例介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10 JAVA安装及环境搭建(wi
- 下一篇: Windows获取本机主机IP信息