为什么在类声明中,“extends”先于“implements”[已关闭]

2022-08-31 20:09:16

为什么必须总是在类声明中编写?例如:implementextend

public class Register extends ActionSupport implements ModelDriven

为什么它不能是:

public class Register implements ModelDriven extends ActionSupport 

后者会产生编译时错误。


答案 1

当 Java 编译器将类转换为字节码时,它必须首先查找父类。这是因为类的基础实现是指向父类的字节码 - 它保存相关的方法和字段。然后,它添加指向子类函数代码的指针 - 其中一些由“implements”关键字强制要求。

因为父类必须是可编译的,所以如果编译器预先知道该类是什么,那就更容易了。此外,您只能扩展一个类,但实现任意数量的接口。如果 extends 关键字可以在任意数量的实现指令中混合,则编译时间会攀升。编译器希望尽快失败以减少开发时间,因此这种选择是合乎逻辑的。此外,出于同样的原因,它可以帮助您清楚地思考类。


答案 2

可能是为了让编译器的工作更容易。这只是一个惯例。能够重新排列这些东西没有任何好处。

这就像问为什么Java函数不是用预序符号编写的,比如.public int (int a, int b)add{ return a+b; }


推荐