1

4 つのメソッドを持つインターフェイスと、インターフェイスを実装するクラスがあります。ここで問題が発生します:「どうすればこれらのメソッドの 2 つだけをインターフェイスから継承し、クラスは抽象化されませんか?」

interface Class1 {
    void method1();
    void method2();
    void method3();
    void method4();
}


public class Class2 implements Class1 {

    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }
}
4

5 に答える 5

1

あなたは巧妙にならなければならず、特にそれがインタビューの質問である場合、なぜこれが機能するのかを調べる必要があります. これは基本的に互換性 (インターフェイスのデフォルト メソッド) のためであり、Java 8 が必要です。

public interface One {
  void method1();
  void method2();
  void method3();
  void method4();
}

public interface Two extends One{
  default void method1(){}
  default void method2(){}
}

public class Three implements Two{

  @Override
  public void method3() {}

  @Override
  public void method4() {}

}

非抽象 Three.class は、メソッド 1 とメソッド 2 のメソッド本体を定義せずに、One.class のメソッド 3 とメソッド 4 を実装します。Method1 と Method2 は、インターフェイス Two.class のデフォルトの実装で定義されています。

于 2016-03-11T01:10:21.087 に答える
0

まず、インターフェイスからすべてのメソッドを取得し、スキップしません。次に、インターフェイス契約を満たすメソッドを実装する必要があります。したがって、クラスに複数のインターフェースを実装できるため、2つの異なるインターフェースを作成してそれらを使用する方がよいでしょう。

   interface ClassA {
        void method1();
        void method2();
    }

    interface ClassB {
        void method3();
        void method4();
    }
于 2016-03-11T01:01:13.417 に答える
0

そんなことはできません。それは、implements キーワードがクラスについて何を意味するかということになります。

インスタンス化可能なクラスは、インターフェイスのすべてのメソッドが実装されていないと、インターフェイスを実装できません。必要なすべてのメソッドを実装していない場合は、クラスの抽象を宣言するか、implements 宣言を削除する必要があります。

于 2016-03-11T18:37:43.130 に答える