关于java:“B类不能是C的超级接口;

“The type B cannot be a superinterface of C; a superinterface must be an interface” error

假设我得到了这个接口A:

1
2
3
4
5
interface A
{
    void doThis();
    String doThat();
}

因此,我希望一些抽象类实现dothis()方法,而不是dothat()方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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");
    }
}

当您最终决定在常规类中实现de-dothat方法时,会出现错误:

1
2
3
4
5
6
7
public class C implements B
{
    public String doThat()
    {
        return"do that";
    }
}

这个类会导致前面提到的错误:

"The type B cannot be a superinterface of C; a superinterface must be an interface"

如果这个类层次结构是有效的,或者我应该反过来做,现在谁都可以了?


必须使用EDOCX1[0]

1
public class C extends B

理解implementsextends关键字之间的区别是很重要的。所以,我建议您从这个问题开始阅读:实现vs扩展:何时使用?有什么区别?答案就在这里。


由于B是一个类,正确的语法是使用extends

1
public class C extends B {


B是抽象类,不能与"implements"关键字一起使用。你必须用"扩展"来代替。