2015-04-16 44 views
-1

請查看以下示例。使用類名稱與接口名稱調用接口類對象之間的區別

public interface Testing { 
    public void go(); 
} 

public class TestingImplements implements Testing { 
    @Override 
    public void go() { 

    } 
} 

public class Main { 

    public static void main(String[] args) { 
     System.out.println("Hello World!"); 
     Testing throughInterface = new TestingImplements(); 
     TestingImplements directly = new TestingImplements(); 
    } 
} 

我的問題是, 什麼優勢劣勢&我獲得通過throughInterface了直接。一點解釋會很有幫助。

Testing throughInterface = new TestingImplements(); 

代替,

TestingImplements directly = new TestingImplements(); 
+3

這並不奇怪,這是首選的方法。 –

+2

您展示的兩個示例是相同的(複製+粘貼失敗?) – DaniEll

回答

1

讓我們來定義一下兩種不同的方法意味着:

  1. 當你說Testing throughInterface = new TestingImplements();,你面向接口編程。

  2. 當你說TestingImplements directly = new TestingImplements();時,你正在編程實現。

超過2用1的優點))

  1. 編譯時間上的優勢:您可以更改得到真實而不改變參考實例化對象的類型和放心,代碼將編譯。例如,你可以說Testing throughInterface = new TestingImplementsTwo();和就沒有必要改變代碼的其餘部分,因爲你知道一個事實,即TestingImplementsTwo將至少含有一個那些存在於Testing
  2. 運行時間上的優勢的方法:你可以換通過控制反轉在運行時實現。
+0

好友,請您將答案擴展到使用2)1)以上的優點,以便我可以得到完整的圖片。 – blueray

+0

使用2比1更有優勢。您應該始終使用1。 – CKing

-1

接口的目的是實現多重繼承,但在你的情況,如果你想改變在另一個類,那麼這將是有用的方法的行爲。

+0

感謝您的答案,但稍微詳細一點就會很好。 – blueray

相關問題