更新時間:2020-10-15 17:26:10 來源:動力節點 瀏覽1374次
Java接口是整個Java語言中重要的組成部分,Java接口實際上是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。由此看來,Java接口的存在是意義非凡的,本文我們就一起來討論Java接口作用及意義。
從某種程度上來說,Java接口作用及意義可以分為以下幾點:
1、重要性:在Java語言中, abstract class 和interface 是支持抽象類定義的兩種機制。正是由于這兩種機制的存在,才賦予了Java強大的面向對象能力。
2、簡單、規范性:如果一個項目比較龐大,那么就需要一個能理清所有業務的架構師來定義一些主要的接口,這些接口不僅告訴開發人員你需要實現那些業務,而且也將命名規范限制住了(防止一些開發人員隨便命名導致別的程序員無法看明白)。
3、維護、拓展性:比如你要做一個畫板程序,其中里面有一個面板類,主要負責繪畫功能,然后你就這樣定義了這個類,可是在不久將來,你突然發現這個類滿足不了你了,然后你又要重新設計這個類,更糟糕是你可能要放棄這個類,那么其他地方可能有引用他,這樣修改起來很麻煩,如果你一開始定義一個接口,把繪制功能放在接口里,然后定義類時實現這個接口,然后你只要用這個接口去引用實現它的類就行了,以后要換的話只不過是引用另一個類而已,這樣就達到維護、拓展的方便性。
4、安全、嚴密性:接口是實現軟件松耦合的重要手段,它描敘了系統對外的所有服務,而不涉及任何具體的實現細節。這樣就比較安全、嚴密一些(一般軟件服務商考慮的比較多)。
但我們如果更深入的探討Java接口存在的意義,我們就會發現,Java接口的存在實際上是為了禁止直接為其實例化對象和打破單繼承局限即實現偽多重繼承。這對整個Java語言來說都是有著重大意義的。
1.禁止直接為其實例化對象
在這個點上,相比于抽象類,Java 對接口的限制更加嚴格了,因為接口連構造方法都沒有,所以,根本不可能為其實例化對象。
//源碼
public interface Move {
//此時編譯器會提示 Interfaces cannot have constructors 錯誤信息
public Move(){}
void move();
}
2.打破單繼承局限(實現偽多重繼承)
不支持多重繼承是Java的特性,但是Java可以實現多個接口,這個在某種程度上可以看做進行多重繼承的一種辦法。所以,一個類在實現了多個接口之后,就可以上轉型為多個接口,即打破單繼承局限。
//源碼
public interface Fly {
void fly();
}
public interface Fight {
void fight();
}
public class SuperMan implements Fly,Fight{
@Override
public void fight() {
System.out.println("SuperMan fight");
}
@Override
public void fly() {
System.out.println("SuperMan fly");
}
}
public class MultiImplementsTest {
public static void main(String[] args) {
SuperMan sm = new SuperMan();
fly(sm);
fight(sm);
}
private static void fly(Fly f){
f.fly();
}
private static void fight(Fight f){
f.fight();
}
}
//執行結果
SuperMan fly
SuperMan fight
由于 SuperMan 實現了 Fly 和 Fight 接口,所以 SuperMan 可以上轉型為 Fly 接口,也可以上轉型為 Fight 接口,即另類的“多重繼承”。
綜上所述,Java接口作用及意義主要還是在于打破Java自身單繼承的枷鎖,同時也能防止接口自身實例化對象,正如本文中的第一點所講的那樣,正是Java接口這一機制的存在,才賦予了Java強大的面向對象能力。我們講了這么多,實際上對于Java接口作用及意義應該有所了解和掌握吧,但java接口的相關知識點我們才剛剛起步,學習Java接口,任重而道遠,怎可沒有動力節點的陪伴?觀看本站的Java基礎教程,動力節點陪你一起學Java!
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習