黑马程序员技术交流社区

标题: 一个类同时继承了两个接 [打印本页]

作者: 442851994    时间: 2012-10-30 10:25
标题: 一个类同时继承了两个接
本帖最后由 442851994 于 2012-11-1 18:15 编辑

class Demo6
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}

interface A
{
        void show();
}

interface B
{
        String  show();
}

class C implements A,B
{

        public void show(){
        
        }

        
        public String show(){}
}
作者: 种生祥    时间: 2012-10-30 11:14
本帖最后由 种生祥 于 2012-10-30 11:24 编辑

因为接口中的方法没有主体,可以由子类任意定义,所以实现的两个接口中有相同的方法,只需要复写一个就可以了
而且
class C implements A,B
{

        public void show(){
        
        }

        
        public String show(){}//如果C的对象调用show()方法时是是调用哪一个?
}
这种情况会编译失败
作者: 王永荣    时间: 2012-10-30 13:05
解决不了,因为两个接口中的show()返回类型是不一样的,不能同时存在于欲实现A和B接口的类C中。
作者: 黑马张旭    时间: 2012-10-30 17:10
其实确实存在你说的这个情况,就是java中一个实现类同时实现两个不同的接口,并且这两个接口中存在相同参数列表的方法。
但是java的设计者们是这样考虑问题的:
接口中只有方法声明而没有实现,因此出现上面那种情况时,实现类中只要实现一次该方法就可以了。从另外一个方面说,设计者们认为这种情况非常罕见,一般来说,开发者在知道两个接口可能会被同一个类实现时,就要注意接口中方法声明不要过于简单易雷同。
作者: 付维翔    时间: 2012-10-30 21:41
可以使用内部类的问题去解决,首先类C本身继承类A ,然后再建一个内部类实现B,在C类中提供一个回调函数,返回内部类的实例对象,就可以了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2