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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王小闲7 初级黑马   /  2012-9-21 09:04  /  2575 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我同时定义了两个接口,一个a一个b。这两个接口中都有方法f();那么我定义一个类C,让这个类同时实现这两个接口a和b。那么类C要重写两个接口的f()方法。这时候问题出现了,类C里面有两个一样的方法,这两个方法既不是重载更不是重写。像这种问题怎么办?求帮忙

评分

参与人数 1技术分 +1 收起 理由
创出一片辉煌 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
类c里面定义一个f()方法就行了吧??我的理解是  类C的方法不管相对于接口A、B都算是复写他们的方法了!这时候创建对象的时候,
A a=new C();a.f();和B b=new C();b.f();这两种方式都会调用C中复写的方法。所以,本人认为C中复写一个f方法就可以了。
回复 使用道具 举报
我同时定义了两个接口,一个a一个b。这两个接口中都有方法f();那么我定义一个类C,让这个类同时实现这两个接口a和b。那么类C要重写两个接口的f()方法。这时候问题出现了,类C里面有两个一样的方法,这两个方法既不是重载更不是重写。像这种问题怎么办?求帮忙
_______________________________
c实现a,b接口.如果说a,b接口都有方法f(),假如这两个接口申明的方法的参数不一样的话,那么需要分别实现这两个方法,如果a,b申明的方法完全一样的话,你在c中重写一个f()方法就同时实现了a,b两个接口的方法.写两个就重复了,错误语法.你c中有两个一样的方法,不是重载和重写,那只能是语法错误了, 一个类中不能出现完全一样的方法,不然编译器怎么分辨你要调用哪个方法?
回复 使用道具 举报
首先你没有理解接口的真真意义,借口不是想当然的就出现了。接口就是最顶层的抽象的规则。
像你说的这种情况,我还可以继续向上抽取。你这样定义接口  绝对是有问题的。
按照你说的意思A接口和B接口肯定不是同一个接口。
那我们这样定义接口就完全没问题了。
第一步 把A B两个接口共性规则再向上抽取出来一个独立的接口 D
interface D
{
   //共性规则。
   f();
}
第二步,再分别定义 A  B 两个 接口。
interface A
{
     //标记一哈A接口,为了说明。
    function_1();}
interface B
{
   //标记一哈B接口,为了说明。
   function_2();
}
第三步 ,类C实现接口 D
class C implements D
{
   public void  f()
       {
            
        }
}
第四步  你再看看  就没问题了。

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 翁鹏 于 2012-9-21 15:15 编辑

尽量使接口实现单一功能。接口是顶层建筑块,顶层抽象。接口的思想不能出现像你这样的情况,因为你这两个接口不是顶层的,还可以向上抽取。你这样不符合接口的思想。
回复 使用道具 举报
JAVA的核心概念:接口(interface)
接口与类属于同一层次,实际上,接口是一种特殊的抽象类。
每个对象都有一个接口:所有的对象都是唯一的,但同时也具有相同的特性和行为对象所归属的类的一部分。
每个对象都能满足某些要求,这些请求由对象的接口所定义的,决定接口的便是类型。
所以接口就是顶级抽象的,它的设计也是比较严格的,在实际当中不会这样做的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马