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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王永旺 中级黑马   /  2012-4-7 15:45  /  1928 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王永旺 于 2012-4-7 15:47 编辑

如果一个类从两个接口继承,并且两个接口中具有同一种方法,这时候怎么实现这个方法呢。
例如:
public interface A {
        public double run();      //这里是第一个run
}

interface B {
        void run();                 //这里第二个run
}

class C implements A,B  {

        public double run() {return 1.0; }    //两个接口中都存在run方法,那么这时候要怎么实现呢?还是根本就不能实现。       

}                               

5 个回复

倒序浏览
本帖最后由 郑苑东 于 2012-4-7 15:50 编辑

其实这样子的无论你override了哪个方法。。其实都是一次性重写了那两个方法。。而且要注意的是如果你实现的接口中有两个或两个以上的同名的方法。。那么这些同名方法的返回值必须一样。。不然会出错。。。
回复 使用道具 举报
因为你实现的是double的run方法所以就只重写了A接口。
一个类中有两个签名相同的方法,无法通过编译。
回复 使用道具 举报
编译是不能通过的。一个double 一个void。
回复 使用道具 举报
C不是抽象的,并且未覆盖B中的抽象方法run()。
C中的run()无法实现B中的run(),返回类型double与void不兼容。
另外接口中的抽象方法只能是public类型的,并且默认即为public abstract类型.
回复 使用道具 举报
在遇到你之前,我对人世间是否有真正的圣人是怀疑的;而现在,我终于相信了!我曾经忘情于汉廷的歌赋,我曾经惊讶于李杜的诗才,我曾经流连于宋元的词曲;但现在,我才知道我有多么浅薄!  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马