A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 442851994 中级黑马   /  2012-10-30 10:25  /  2240 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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(){}
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 种生祥 于 2012-10-30 11:24 编辑

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

        public void show(){
        
        }

        
        public String show(){}//如果C的对象调用show()方法时是是调用哪一个?
}
这种情况会编译失败

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 赞一个!

查看全部评分

回复 使用道具 举报
解决不了,因为两个接口中的show()返回类型是不一样的,不能同时存在于欲实现A和B接口的类C中。
回复 使用道具 举报
其实确实存在你说的这个情况,就是java中一个实现类同时实现两个不同的接口,并且这两个接口中存在相同参数列表的方法。
但是java的设计者们是这样考虑问题的:
接口中只有方法声明而没有实现,因此出现上面那种情况时,实现类中只要实现一次该方法就可以了。从另外一个方面说,设计者们认为这种情况非常罕见,一般来说,开发者在知道两个接口可能会被同一个类实现时,就要注意接口中方法声明不要过于简单易雷同。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
可以使用内部类的问题去解决,首先类C本身继承类A ,然后再建一个内部类实现B,在C类中提供一个回调函数,返回内部类的实例对象,就可以了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马