8

そのようなものを検索するのにわずかな時間しかなかったため、特定のシナリオをカバーするものは何も見つかりませんでした.

サードパーティのインターフェースを使用しています。しばらくの間、次のようにしましょう。

    public interface interface1
    {
        public String getVar1();

        public void  method1();

        public void method2();

    }

このインターフェースを利用する多くのクラスを作成する必要がありますが、「method1」と「getVar1」は常に同じコードであるため、「method2」の実際のメソッド実装はそれぞれ異なります。

インターフェイスを実装するが、子クラスに「method2」の実装を強制するだけの抽象基本クラスを作成する方法はありますか?

やってみた

public abstract @Override void method2

しかし、これはNetbeansの設計時には「許容可能」ですが(Eclipseの動作が異なるかどうかはわかりません)、コンパイル時にはmethod2を実装する必要があると不平を言います。

それが不可能な場合は、公平に、確認する必要があります。

ありがとう

4

5 に答える 5

2

実装しない抽象クラスを作成できますmethod2()

public abstract class AbstractImplementation implements interface1 {
    public String getVar1() { 
      // implementation ..
    }

    public void  method1() {
      // implementation ..
    }

    // skip method2
}

次に、複数の実装を作成します。

public class Implementation1 extends AbstractImplementation {
    public void method2() {
      // implementation 1
    }
} 

public class Implementation2 extends AbstractImplementation {
    public void method2() {
      // implementation 2
    }
}

...
于 2013-09-03T10:50:26.847 に答える
0

abstract Class「メソッド 1」と「getVar1」の実装を提供する をdecalre method2 as abstractこのクラスに含めることができます。

この抽象スーパー クラスを他のすべてのクラスに継承します。

お気に入り

public interface interface1 {

    public void getVar1();

    public void method1();

    public void method2();

}

public abstract class test implements interface1 {

    @Override
    public void getVar1() {
        // TODO Auto-generated method stub

    }

    @Override
    public void method1() {
        // TODO Auto-generated method stub

    }

    @Override
    public abstract void method2();


}

public class test1 extends test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

    @Override
    public void method2() {
        // TODO Auto-generated method stub

    }

}
于 2013-09-03T10:48:49.053 に答える