如果我声明我的对象实现了一个接口,但未能实现这些方法,那么当我编译我的代码时,我会得到一个编译器错误。java编译器怎么知道我没有实现一个接口的所有方法?
问问题
453 次
1 回答
1
java编译器怎么知道我没有实现一个接口的所有方法?
它知道你的类已经实现的所有方法,因为它在编译期间发现并分析了它们。
它知道在你的类的所有超类和接口中定义的所有方法,因为:
它要么刚刚编译了他们的源代码,要么加载了他们的“.class”文件,并且
它已经分析了接口/类,并找出了你的类需要实现哪些方法。
然后比较两组方法。(注意,方法不需要完全相同。例如,实际方法可以返回接口中方法的返回类型的子类型。集合比较需要考虑到这一点。)
(实际上,这只是进行此检查的一种方法。实际的 Java 编译器可能会以不同的方式进行检查。)
于 2016-07-27T14:47:35.443 回答