黑马程序员技术交流社区

标题: 接口的多实现的一个疑惑 [打印本页]

作者: 游兴钟    时间: 2012-5-18 21:34
标题: 接口的多实现的一个疑惑
interface A{
     void show();
}
interface B{
     int show();
}
这两个接口能被一个类实现嘛。。真实现了,再一建对象调用show()不是挂了嘛。但如果说不能同时被一个类实现,又违背了接口多实现的原则。求解。
作者: Fc10232    时间: 2012-5-18 21:47
接口里边的函数只有函数声明没有执行代码,随便你实现哪一个都是一样的。   
一般情况下接口只是强迫你实现,而并不关心你怎么实现,以及实现的方法有何意义
真正用的代码是类继承接口后类中的show()

作者: 黄奕豪    时间: 2012-5-18 21:55
本帖最后由 黄奕豪 于 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. }
复制代码

作者: 任睦强    时间: 2012-5-18 22:00
本帖最后由 任睦强 于 2012-5-18 22:07 编辑

一个类可以继承多个接口,如果你的这个类继承了这两个接口的话,如果这两个接口有同一个一模一样的方法,这个就会重写这个方法
如果继承的接口方法名相同,返回类型不同 ,就会报错的
作者: 游兴钟    时间: 2012-5-19 01:05
黄奕豪 发表于 2012-5-18 21:55

多谢各位哥们儿的热心解答,也许是我的表述不清楚。在这里我想讨论的多实现的限制问题。
作者: 黄奕豪    时间: 2012-5-19 07:01
achilles 发表于 2012-5-19 01:05
多谢各位哥们儿的热心解答,也许是我的表述不清楚。在这里我想讨论的多实现的限制问题。 ...

接口多实现的限制除了接口本身的语法规则外,应该就这个是特例了!!我也是在学习中,如果有什么理解不够的!还希望多指教!!
作者: 李保成    时间: 2012-5-19 07:15
呵呵 是不是考虑使用以下内部类呢?
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();
    }
}
作者: niceBoy    时间: 2012-5-19 08:05
虚拟机只认方法名和参数列表来区别方法,所以重写一个就好了,随便什么返回值。




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