为什么必须始终在类声明中扩展后编写实现,例如:
public class Register extends ActionSupport implements ModelDriven
为什么不
public class Register implements ModelDriven extends ActionSupport
是编译时错误
答案 0 :(得分:79)
当Java编译器将类转换为字节码时,它必须首先查看父类。这是因为类的底层实现是指向父类的字节码 - 它包含相关的方法和字段。然后它添加了指向子类函数代码的指针 - 其中一些函数由'implements'关键字强制执行。
因为父类必须是可编译的,所以如果编译器事先知道该类是什么,则更容易。此外,您只能扩展一个类,但可以实现任意数量的接口。如果extends关键字可以在任意数量的实现指令之间混合,则编译时间会增加。编译器希望尽可能快地失败以减少开发时间,因此这种选择是合乎逻辑的。此外,它可以帮助您以同样的理由清楚地思考课程。
答案 1 :(得分:4)
可能会使编译器的工作更容易。这只是一个惯例。能够重新排列这些东西没有任何好处。
这就像问为什么Java函数不是以public int (int a, int b)add{ return a+b; }
之类的预先顺序表示法编写。