簡體   English   中英

使用接口。 如何驗證我的 Java 接口?

[英]Using interfaces. How can I verify my Java interface?

我試圖像世界上數以百萬計的其他人一樣理解 Java 接口。 我如何測試我是否真的在使用我的界面? 如果我刪除 TestBubbles 類中的“實現”,我仍然會得到相同的結果。 我可以更改任一方法定義並導致編譯失敗,但如何測試我傳遞的數據?

public interface Bubbles {
   public void addAir(String bubbleType, float bubbleOne, float bubbleTwo );
}

public class TestBubbles implements Bubbles {

    public static void main(String [] args){
      String type = "wiggly";
      float sizeOne = 42.01f;
      float sizeTwo = 80.10f;

      TestBubbles tb = new TestBubbles();
      tb.addAir(type, sizeOne, sizeTwo);

}


   public void addAir(String rType, float fOne, float fTwo ){
       System.out.println(rType + " " + fOne + " " + fTwo);

   }

}

通常,您應該使用接口類型的變量來引用對象。

例如

Bubbles tb = new TestBubbles(); //now it will not compile if you remove implements

不是如下(否則創建界面就沒有意義了)

TestBubbles tb = new TestBubbles();

你測試它,你應該通過用接口的類型而不是你的類的類型定義變量來編碼。
看看你的線路:

TestBubbles tb = new TestBubbles();
tb.addAir(type, sizeOne, sizeTwo);

對接口進行編程時,應按如下方式編碼:

Bubbles tb = new TestBubbles();
tb.addAir(type, sizeOne, sizeTwo);

這樣,您以后可以將 TestBubbles 與 SuperTrooperTestBubbles 交換,SuperTrooperTestBubbles 只需更改一行代碼即可實現相同的接口,其余部分將起作用:

Bubbles tb = new SuperTrooperTestBubbles();
tb.addAir(type, sizeOne, sizeTwo);

在哪里

public class SuperTrooperTestBubbles implements Bubbles { .... 

如果接口對輸入變量指定了任何約束,則由具體實現來檢查它們。 沒有神奇的解決方案。

也就是說,您可以將方法標記為@Override ,如果它覆蓋另一個方法,這將導致編譯器錯誤,這對於這種情況很有用。 我總是這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM