0

実装する必要がある3つのメソッドを定義したインターフェイスAがあり、クラスBは3つのメソッドすべてを実装する必要があります。問題ない。しかし、クラス C でもインターフェイス A を実装しているので、3 つのメソッドすべての実装を作成する必要があります。しかし、私のクラス C はdoSomthing3().

ここでは例を示しているだけですが、実際のアプリケーションは多くのメソッドを持つ大規模なものです。

インターフェイス A を実装する 100 個のサブクラスがあり、インターフェイス A に追加できる別の新しいメソッドを 50 個のクラスに持たせたいとします。しかし、100 個のサブクラスすべてに実装する必要がありますか? 不要なメソッドを継承しないようにするにはどうすればよいですか。

public interface A {

   public void doSomething1();
   public void doSomething2();
   public void doSomething3();

 }

public class B implements A{
   public void doSomething1(){
      System.out.println("doSomething 1");
   }

   public void doSomething2(){
      System.out.println("doSomething 2");
   }

   public void doSomething3(){
      System.out.println("doSomething 3");
   }

}

public class C implements A{

   public void doSomething1(){
      System.out.println("doSomething 1");
   }

   public void doSomething2(){
      System.out.println("doSomething 2");
   }

   public void doSomething3(){ /*Do nothing in this class */  }

}
4

4 に答える 4

4

2 つのインターフェイスを作成できます。1 つは両方のクラスに実装するメソッドを含み、もう 1 つは他のクラスに必要な追加メソッドを含みます。次に、適切なインターフェイスを適切なクラスに実装します。

public interface A {

   public void doSomething1();
   public void doSomething2();

 }

public interface B extends A {

   public void doSomething3();

 }

それで

public class ClassB implements B{
   public void doSomething1(){
      System.out.println("doSomething 1");
   }

   public void doSomething2(){
      System.out.println("doSomething 2");
   }

   public void doSomething3(){
      System.out.println("doSomething 3");
   }

}


public class ClassA implements A{

       public void doSomething1(){
          System.out.println("doSomething 1");
       }

       public void doSomething2(){
          System.out.println("doSomething 2");
       }

    }
于 2013-06-06T09:41:09.197 に答える
0

NoSuchMethodError またはその他の実行時例外を常にトリガーするインターフェイスの単純な実装を作成できます。

そして、単にそのクラスを拡張し、有用なメソッドのみをオーバーライドします。

または、別の回答で述べたように、インターフェイスの再設計を検討することもできます。

于 2013-06-06T09:41:52.527 に答える