为什么在implements关键字之前始终需要使用extends关键字?

时间:2015-01-18 14:47:24

标签: java inheritance

我试图从一个类扩展并实现一个接口。这是我的代码。

class A {

    public void print1() {
          System.out.println("Hello Class");
    }
}

interface B {

    public void print2();
}

class C extends A implements B {
    public void print2() {
        System.out.println("Interface");
    }
}

我首先做的是

class C implements B extends A  {
    public void print2() {
        System.out.println("Interface");
    }
}

它会导致错误。 似乎extends关键字需要在implements之前出现。为什么需要它?任何特定的原因或者它只是java开发的方式。 ?

2 个答案:

答案 0 :(得分:1)

因为您只能从一个类扩展,但实现多个接口。我认为这只是语言语法所强加的良好语法风格的问题。无论如何,这个问题似乎与this one重复。

答案 1 :(得分:1)

这是在JLS, section 8.1

中定义的
NormalClassDeclaration:
{ClassModifier} class Identifier [TypeParameters] [Superclass] [Superinterfaces] ClassBody

在这里,您可以清楚地看到必须在任何超接口声明之前声明超类。