日期:2014-05-20  浏览次数:20657 次

如果一个类实现了两个接口,而这两个接口里边有相同名字的方法,在类里边如何定义这两个方法?
例如
interface   Interface1
{
        void   Test();
}
interface   Interface2
{
        void   Test();
}
class   ClassTest   implements   Interface1,Interface2
{
        void   Test()//实现哪个接口的Test方法?
        {
        }
}

------解决方案--------------------
没办法分别

就是一个,可以说是继承Interface1,也可以说是Interface2的
用这两个接口都可以找到这个方法
------解决方案--------------------

没想过,关注下
------解决方案--------------------
试了一下,貌似谁写在前面就显示实现谁的
不过问一句,这样的接口设计有意义吗?
------解决方案--------------------
问题没有意义
很极端
------解决方案--------------------
好像是两个接口共用一个实现
------解决方案--------------------
能编译通过?
------解决方案--------------------
能编译通过?实现接口的方法一定要是public

------解决方案--------------------
没法区分,不过这样的设计本身存在问题

就算只能这样,其实也无所谓,接口本身就是定义一个框架,方法在哪个接口中从实现上来说没什么意义,意义只能从面向对象的思想去理解,把方法进行了归类而已
------解决方案--------------------
对象是实现哪个接口的引用,那么Test()方法就是哪个接口的
------解决方案--------------------
这完全正常!两个接口共用一个实现。

接口不是实体,只是声明。在JAVA中多次声明在原则是没有问题的,只要能保证只有一次实现就可以了。这一点和C++是类似的。

从设计上说,这种设计也完全合情合理,无可厚非。
------解决方案--------------------
我同意楼上的说法