Java超詳細(xì)講解接口的實現(xiàn)與用法
1.接口的定義
接口是一種特殊的抽象類,是Java提供的一個重要的功能,與抽象類不同的是:
- 接口的所有數(shù)據(jù)成員都是靜態(tài)的且必須初始化。
- 接口中的所有方法必須都是抽象方法,不能有一般的方法。
[public] interface 接口名稱 [extends 父接口名列表]
{
[public] [static] [final]數(shù)據(jù)類型 成員變量名 = 常量;
...
[public][abstract]返回值數(shù)據(jù)類型 方法名(參數(shù)表);
...
}

其中,成員方法必須都是抽象方法。接口定義的[ ]中的修飾符可以省略,省略后默認(rèn)為以上訪問權(quán)限。
---------------??分割線??---------------
2.接口的實現(xiàn)
接口和抽象類一樣不能用來實例化對象,必須借用接口的特征創(chuàng)建出來一個新的類,然后用新的類來實例化對象。
- 利用接口創(chuàng)建新的類的過程稱為接口的實現(xiàn)。
- 實現(xiàn)一個接口的過程使用implements關(guān)鍵字。
class 類名稱 implements 接口名表
{
...
}

- 如果實現(xiàn)某接口的類不是抽象類,那么它必須實現(xiàn)指定接口的所有抽象方法。
- 類在實現(xiàn)接口的方法時必須顯式的使用pulic訪問權(quán)限修飾符,子類覆蓋父類方法時不可以縮小父類方法的訪問權(quán)限范圍。
---------------??分割線??---------------
3.接口的引用
接口可以作為一種引用類型來使用,任何實現(xiàn)該接口的類實例化的對象都可以儲存在該接口類型的變量中,通過這些變量訪問類所實現(xiàn)的接口中的方法。

---------------??分割線??---------------
4.接口的繼承
當(dāng)然啦!接口和類一樣也可以使用繼承派生出來新的類。也可以通過extends關(guān)鍵字來實現(xiàn),被繼承的接口稱為父接口,派生出來的新接口稱為子接口。但是不同的是,一個子接口可以同時有多個直接父接口。它們之間用逗號分隔。子接口繼承父接口的所有變量和方法。
如果子接口中定義了和父接口同名的常量,父接口中的常量被隱藏,如果時方法,則被覆蓋。
interface A{
abstract void print1();
}
interface B extends A{
abstract void print2();
}
class C implements B{
public void print1(){
System.out.print("Hello");
}
public void print2(){
System.out.print("World");
}
}
public class Print{
public static void main(String[] args){
B b=new C();
b.print1();
b.print2();
}
}

其中B接口是A接口的直接父接口,C類實現(xiàn)B接口,覆蓋B接口中的所有的抽象方法。Print類是主類,定義接口的引用指向?qū)崿F(xiàn)它的類的實例化對象,訪問類所實現(xiàn)的接口中的方法。(接口作為引用數(shù)據(jù)類型使用)
---------------??分割線??---------------
5.利用接口實現(xiàn)多重繼承
由于Java不支持多重繼承,所以可以利用接口實現(xiàn)類似于多重繼承的機(jī)制,同時規(guī)避了C++多重繼承中存在很多歧義的問題,使代碼更加簡潔,邏輯清晰,安全可靠。一個類只能有一個直接父類,但是它可以同時實現(xiàn)多個接口,可以把接口理解為類,即實現(xiàn)了Java類的多重繼承。
//filename:Cylinder.java
interface Face1{
final double PI=3.14;
abstract double area();
}
interface Face2{
abstract void volume();
}
public class Cylinder implements Face1,Face2{
private double radius;
private int height;
public Cylinder(double r,int h){
radius=r;
height=h;
}
public double area(){
return PI*radius*radius;
}
public void volume(){
System.out.print("圓柱體的體積="+this.area()*height);
}
public static void main(String[] args){
Cylinder volu=new Cylinder(5.0,2);
volu.volume();
}
}
//圓柱體的體積=157.0

到此這篇關(guān)于Java超詳細(xì)講解接口的實現(xiàn)與用法的文章就介紹到這了,更多相關(guān)Java接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳細(xì)解讀AbstractStringBuilder類源碼
這篇文章主要介紹了詳細(xì)解讀AbstractStringBuilder類源碼,具有一定參考價值,需要的朋友可以了解下。2017-12-12
jsp+dao+bean+servlet(MVC模式)實現(xiàn)簡單用戶登錄和注冊頁面
這篇文章主要介紹了jsp+dao+bean+servlet(MVC模式)實現(xiàn)簡單用戶登錄和注冊頁面,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
springcloud?gateway實現(xiàn)簡易版灰度路由步驟詳解
這篇文章主要為大家介紹了springcloud?gateway實現(xiàn)簡易版灰度路由步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
用java實現(xiàn)學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09
解決Springboot 2 的@RequestParam接收數(shù)組異常問題
這篇文章主要介紹了解決Springboot 2 的@RequestParam接收數(shù)組異常問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
SpringBoot前后端json數(shù)據(jù)交互的全過程記錄
現(xiàn)在大多數(shù)互聯(lián)網(wǎng)項目都是采用前后端分離的方式開發(fā),下面這篇文章主要給大家介紹了關(guān)于SpringBoot前后端json數(shù)據(jù)交互的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03

