界面实现混乱?

时间:2011-08-21 18:17:02

标签: java php interface

我看到一个代码,其中有两个接口有一些方法,两个方法具有相同的名称。然后有一个实现这些接口的类,我认为它不应该编译,因为方法名称含糊不清。为什么它工作正常。

2 个答案:

答案 0 :(得分:2)

发生此问题的每种语言都会以不同的方式解决问题。在某些语言中,这可能是一个错误; C ++就是这样。但是在Java中,只要这两种方法具有兼容的异常规范 - 即,只要它实际上可以实现满足两个接口的方法 - 那么它就是语言规范特别允许的。一种方法满足每个接口,一切都很好。询问该方法属于哪个接口是没有意义的;它既属于两者,也属于无。

请注意,您可以使用方法x()创建一个类,然后使用子类扩展该类,该子类声明自己实现包含方法x()的某个接口;子进程使用继承的方法自动满足接口,继承的方法本身是在不知道接口的情况下声明的。如您所见,Java接口纯粹是声明性的;他们不关心方法的来源,只关注有问题的类包含它们。

我不能说PHP,但也许它是一样的,但我确信它在一些小细节上有所不同。

答案 1 :(得分:0)

如果方法相同,方法名称不存在歧义。

因此,实质上,Java中没有问题,因为实现类应该只提供一个实现。