2021-05-12 14:32:11
動力節點教程:Java介面作用及意義
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!
相關文章