[英]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.