使用接口。如何验证我的Java界面?

时间:2012-11-28 02:48:32

标签: java interface

我正在尝试理解Java接口,就像全世界数以百万计的其他人一样。我如何测试我是否真的使用我的界面?如果我删除了TestBubbles类中的“implements”,我仍然会得到相同的结果。我可以更改任一方法定义并获得编译失败,但如何测试我传递的数据?

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);

   }

}

3 个答案:

答案 0 :(得分:1)

通常,您应该使用接口类型的变量来引用该对象。

e.g。

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

不如下(否则创建界面没有意义)

TestBubbles tb = new TestBubbles();

答案 1 :(得分:1)

您测试了这一点,您应该通过使用接口类型而不是类的类型来定义变量来编写代码。
看看你的专栏:

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

编程到应按如下方式编码的接口时:

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

这样你以后可以用SuperTrooperTestBubbles交换TestBubbles,它只通过改变一行代码来实现相同的接口,其余的将工作:

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

哪里

public class SuperTrooperTestBubbles implements Bubbles { .... 

答案 2 :(得分:0)

如果接口指定输入变量的任何约束,则由具体实现来检查它们。没有神奇的解决方案。

也就是说,您可以将方法标记为@Override,如果覆盖另一个方法,则会使其成为编译器错误,这对于这种情况很有用。我总是这样做。