-2

私は、世界中の何百万もの他のインターフェースと同様に、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);

   }

}
4

3 に答える 3

1

通常は、インターフェイス型の変数を使用してオブジェクトを参照する必要があります。

例えば

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

次のようではありません(そうでなければ、インターフェースを作成する意味がありません)

TestBubbles tb = new TestBubbles();
于 2012-11-28T03:13:07.780 に答える
1

それをテストし、クラスの型ではなくインターフェースの型で変数を定義することにより、それをコーディングする必要があります。
あなたの行を見てください:

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

次のようにコーディングする必要があるインターフェイスにプログラミングする場合:

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

そうすれば、後でコードを 1 行変更するだけで同じインターフェイスを実装する SuperTrooperTestBubbles と TestBubbles を交換でき、残りは機能します。

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

どこ

public class SuperTrooperTestBubbles implements Bubbles { .... 
于 2012-11-28T03:25:18.507 に答える
0

インターフェイスが入力変数に何らかの制約を指定している場合、それらをチェックするのは具体的な実装次第です。魔法の解決策はありません。

とはいえ、別のメソッドをオーバーライドしない@Override場合にコンパイル エラーになるメソッドをマークすることができます。これは、この状況に役立ちます。私はいつもこれをします。

于 2012-11-28T02:52:18.977 に答える