5

私がこのインターフェースAを手に入れたとしましょう:

interface A
{
    void doThis();
    String doThat();
}

したがって、いくつかの抽象クラスでメソッドdoThis()を実装する必要がありますが、doThat()メソッドは実装しません。

abstract class B implements A
{
    public void doThis()
    {
        System.out.println("do this and then "+ doThat());
    }

}

abstract class B2 implements A
{
    public void doThis()
    {
        System.out.println(doThat() + "and then do this");
    }
}

最終的にdedoThatメソッドを通常のクラスに実装することにしたときにエラーが発生します。

public class C implements B
{
    public String doThat()
    {
        return "do that";
    }
}

このクラスは、前述のエラーにつながります。

「タイプBをCのスーパーインターフェイスにすることはできません。スーパーインターフェイスはインターフェイスである必要があります」

このクラスの階層が有効であるかどうか、または他の方法で行う必要がある場合は、だれでもできますか?

4

3 に答える 3

23

使用する必要がありますextends

public class C extends B

implementsextendsキーワードの違いを理解することが重要です。したがって、この質問から読み始めることをお勧めします:実装と拡張:いつ使用するか?違いは何ですか?そしてそこに答えがあります。

于 2012-05-03T16:03:42.777 に答える
4

はクラスなのでB、正しい構文は次を使用することextendsです。

public class C extends B {
于 2012-05-03T16:04:11.553 に答える
2

Bは抽象クラスであり、「implements」キーワードと一緒に使用することはできません。代わりに「extends」を使用する必要があります。

于 2012-05-03T16:05:04.430 に答える