1

如果我声明我的对象实现了一个接口,但未能实现这些方法,那么当我编译我的代码时,我会得到一个编译器错误。java编译器怎么知道我没有实现一个接口的所有方法?

4

1 回答 1

1

java编译器怎么知道我没有实现一个接口的所有方法?

它知道你的类已经实现的所有方法,因为它在编译期间发现并分析了它们。

它知道在你的类的所有超类和接口中定义的所有方法,因为:

  1. 它要么刚刚编译了他们的源代码,要么加载了他们的“.class”文件,并且

  2. 它已经分析了接口/类,并找出了你的类需要实现哪些方法。

然后比较两组方法。(注意,方法不需要完全相同。例如,实际方法可以返回接口中方法的返回类型的子类型。集合比较需要考虑到这一点。)


(实际上,这只是进行此检查的一种方法。实际的 Java 编译器可能会以不同的方式进行检查。)

于 2016-07-27T14:47:35.443 回答