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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 游兴钟 中级黑马   /  2012-5-18 21:34  /  1869 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

interface A{
     void show();
}
interface B{
     int show();
}
这两个接口能被一个类实现嘛。。真实现了,再一建对象调用show()不是挂了嘛。但如果说不能同时被一个类实现,又违背了接口多实现的原则。求解。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

7 个回复

倒序浏览
接口里边的函数只有函数声明没有执行代码,随便你实现哪一个都是一样的。   
一般情况下接口只是强迫你实现,而并不关心你怎么实现,以及实现的方法有何意义
真正用的代码是类继承接口后类中的show()
回复 使用道具 举报
本帖最后由 黄奕豪 于 2012-5-18 21:59 编辑
  1. /*这个不行,编译直接挂了,因为即使你分别实现了不同返回值类型的函数,但是你调用的时候,主函数根本就不知道你是调用的哪个,但是如果返回值类型相同的话就可以, 因为接口没有方法体,所以多实现的时候只要重写一次函数就可以了!!像下面这样!!*/

  2. interface A{
  3.       void show();
  4. }
  5. interface B{
  6.       void show();
  7. }
  8. class Demo implements A,B
  9. {
  10. public void show(){}//两个重写一次就行了!
  11. public static void main(String[] args)
  12. {
  13. Demo d=new Demo();
  14. d.show();
  15. }
  16. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 任睦强 于 2012-5-18 22:07 编辑

一个类可以继承多个接口,如果你的这个类继承了这两个接口的话,如果这两个接口有同一个一模一样的方法,这个就会重写这个方法
如果继承的接口方法名相同,返回类型不同 ,就会报错的
回复 使用道具 举报
黄奕豪 发表于 2012-5-18 21:55

多谢各位哥们儿的热心解答,也许是我的表述不清楚。在这里我想讨论的多实现的限制问题。
回复 使用道具 举报
achilles 发表于 2012-5-19 01:05
多谢各位哥们儿的热心解答,也许是我的表述不清楚。在这里我想讨论的多实现的限制问题。 ...

接口多实现的限制除了接口本身的语法规则外,应该就这个是特例了!!我也是在学习中,如果有什么理解不够的!还希望多指教!!
回复 使用道具 举报
呵呵 是不是考虑使用以下内部类呢?
interface A
{
    void show();
}
interface B
{
    void show();
}
public class MultiInter implements A{

    public void show(){
       System.out.println("I am from A");
    }
   
    private class BImpl implements B{
         public void get(){
           System.out.println("I am from B");
        }
    }
    public void get2(){
        B b2=new BImpl();
        b2.get();
    }
    public static void main(String rsg[]){
        MultiInter mi=new MultiInter();
        mi.get();
        mi.get2();
    }
}
回复 使用道具 举报
虚拟机只认方法名和参数列表来区别方法,所以重写一个就好了,随便什么返回值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马