interface详解
interface(接口)
1.interface的定義:
public interface 接口名{}
接口(interface)是抽象方法和常量值的定義的集合。
從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現(xiàn)。
2.interface的抽象方法:
寫抽象方法的幾種形式,可以省略public abstract 或public 或 abstract都可以。
public interface interfaceDemo01 {public abstract void show();void eat();abstract void sleep();public void study(); }如果要想實現(xiàn)接口,就要有一個實現(xiàn)類去實現(xiàn),而且要實現(xiàn)它其中的抽象方法,并且要用implements關(guān)鍵字。形式為實現(xiàn)類名 implements 接口名。
public class test implements interfaceDemo01{@Overridepublic void show() {}@Overridepublic void eat() {}@Overridepublic void sleep() {}@Overridepublic void study() {} }3.interface的默認方法:
在接口中可以有默認方法,形式為 public default 返回值類型 方法名(){? }。
接口中默認方法的實現(xiàn):
public interface interfaceDemo01 {public abstract void show();public default void play(){System.out.println("我在敲代碼");} }接口中默認方法的調(diào)用:需要創(chuàng)建對象
public class demo {public static void main(String[] args) {test t = new test();t.play();} }接口中默認方法還可以被實現(xiàn)類覆蓋重寫
public class test implements interfaceDemo01{@Overridepublic void show() {}@Overridepublic void play() {System.out.println("實現(xiàn)類重新接口默認方法");} }4.interface的靜態(tài)方法:
在接口中可以有靜態(tài)方法,形式為 public static 返回值類型 方法名(){ }。
接口中靜態(tài)方法的實現(xiàn):
public interface interfaceDemo01 {public abstract void show();public default void play(){System.out.println("我在敲代碼");}public static void moYu(){System.out.println("上課摸魚");} }接口中靜態(tài)方法的調(diào)用:不需要創(chuàng)建對象,直接可以用 接口名.靜態(tài)方法名();即可
public class demo {public static void main(String[] args) {test t = new test();t.play();interfaceDemo01.moYu();} }接口中靜態(tài)方法不能被實現(xiàn)類重寫,因為它屬于接口獨有,并且在實現(xiàn)類中可以定義一個與接口中靜態(tài)方法方法名相同的靜態(tài)方法,則這個靜態(tài)方法歸實現(xiàn)類獨有。
5.interface的常量定義和使用:
在接口中定義常量,形式為public final 數(shù)據(jù)類型 變量名 = 數(shù)值;。這里面的public 和 final都可以省略掉。
public interface interfaceDemo01 {public int m = 100;public final int n = 10;int w = 100;public abstract void show();public default void play(){System.out.println("我在敲代碼");}public static void moYu(){System.out.println("上課摸魚");} } public class test implements interfaceDemo01{@Overridepublic void show() {System.out.println(m);System.out.println(n);System.out.println(w);}@Overridepublic void play() {System.out.println("實現(xiàn)類重新接口默認方法");}public static void moYu(){System.out.println("實現(xiàn)類獨有");} }6.interface之間的多繼承:
Java中的繼承都是單繼承的,就是說一個父類可以被多個子類繼承但是一個子類只能有一個父類。但是一個接口可以被不同實現(xiàn)類去實現(xiàn),這就是我們說的Java中的多態(tài)的概念。下面我們再來說一下接口的多繼承的概念,就是說一個接口是可以繼承多個接口的。
一個實現(xiàn)類可以繼承多個接口,但要實現(xiàn)每個接口中的抽象方法。不過如果接口中存在相同的接口默認方法(也就是兩個接口中默認方法名相同),這就是接口默認方法沖突。這個解決辦法就是在實現(xiàn)類中覆蓋重寫該默認方法即可。
如果接口默認方法名和另一個接口的抽象方法同名,返回值類型也相同,這種沖突可以通過實現(xiàn)類覆蓋重寫該方法來解決問題。但是若返回值類型不相同則無法解決該問題,因為這純屬沒事閑的才這樣做。
7.繼承父類并實現(xiàn)多接口:
一個類既可以繼承父類也可以是很多接口的實現(xiàn)類。形式為:類名 extends 父類名 implements 接口名,接口名...
當父類的成員方法名和接口中的默認方法名相同時,返回值類型也相同,則優(yōu)先繼承父類,即不顯式的實現(xiàn)接口也不會報錯。
當父類的成員方法名和接口中的抽象方法名相同時,返回值類型也相同,則優(yōu)先繼承父類,即不顯式的實現(xiàn)接口也不會報錯。(這句話的意思就是因為子類繼承了父類中的成員方法相當與覆蓋重寫了接口中的抽象方法,所以子類中可以不實現(xiàn)該抽象方法,調(diào)用時直接調(diào)用父類中的該成員方法即可)。
public class Fu {public Fu() {}public void play(){System.out.println("我在玩");}public void s(){System.out.println("m");} } public interface interfaceDemo01 {public int m = 100;public final int n = 10;int w = 100;public abstract void show();public default void play(){System.out.println("我在敲代碼");}public static void moYu(){System.out.println("上課摸魚");} } public interface interfaceDemo02 {public abstract void show();void s(); } public class test extends Fu implements interfaceDemo01,interfaceDemo02{@Overridepublic void show() {System.out.println(m);System.out.println(n);System.out.println(w);}public static void moYu(){System.out.println("實現(xiàn)類獨有");} } public class demo {public static void main(String[] args) {test t = new test();t.show();t.play();t.s();interfaceDemo01.moYu();test.moYu();} }輸出結(jié)果:
100
10
100
我在玩
m
上課摸魚
實現(xiàn)類獨有
總結(jié)
以上是生活随笔為你收集整理的interface详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络的三大功能,计算机网络主要功能
- 下一篇: JPEG 原理分析及 JPEG 解码器的