有个总类Y,分成两个分支,Y->A,Y->B,如果都是继承关系的话,那么A或B只能用到Y中的方法,如果是接口关系的话,是不是A可以调用B中某个方法? 接口到底是怎么用的? 我总觉得接口是抽象方法,没有方法的实现体,有什么用呢?

解决方案 »

  1.   

    是不是A可以调用B中某个方法? 
    不能,除非B b=new B();b.bMethod()这样调用。
      

  2.   

    我总觉得接口是抽象方法 
    这话对了。
    接口就是抽象方法的进一步抽象。有什么用的话一两句话体会不出来。
    最常见的例子,你用集合类比如List,就是一个接口,常用的实现类有ArrayList,和Vector
    一般推荐的用法是
    List list = new ArrayList();
    这样你想改成Vector时只要改成
    List list = new Vector();
    就好了。还有JDBC数据库连接,SUN只给出了通用接口,具体的实现由各数据库厂商提供,你调用的只是通用的方法,这样就隐藏了各个不同数据库具体实现的区别。
      

  3.   

    可是这个接口实现在哪实现呢?我看书上我引用接口的话,我要自己定义接口的实现方法,比如LIST接口,我要实现它就要自己写代码来实现这个接口,怎么做到上面那样呢?不用实现,实例话就行了呢?实现代码在哪?
      

  4.   

    List已经有几种实现了,ArrayList和Vector就是
    区别在于Vector是线性安全的,ArrayList不是,所以ArrayList性能好一些。Vecotr安全一些。
      

  5.   

    看看书!
    要不用搜索引擎search一下。.
      

  6.   

    比如一个接口A,怎么做可以实现别的类引用这个接口是直接引用就可以用呢?和继承一样晕,我只是用java API中的例子来说明,并没有说有接口就能马上有实现类。只不过我说的例子都是人家做好了的。
      

  7.   

    接口就是一个特殊的抽象类,是用来定义数据类型的,java的多太是可以解决你这个问题的。父类可以出现的地方子类一定可以出现
      

  8.   

    接口是特殊的抽象类:
    1. 接口中的字段(数据成员)默认被final修饰,而且必须初始化。
    2. 接口中的方法(函数成员)默认被abstract修饰。即必须是抽象方法。
    interface A{                     //定义接口 A
    final int a=5;          //定义a 初始化a=5
    abstract void show1();  //定义show1()抽象方法
    }interface B{              //定义接口 B
    int b=6;         //省略final修饰 初始化b=6
    void show2();    //省略abstract 定义show2()抽象方法
    }
    class Y implements A,B{         //Y类 同时 实现接口 A 和 B (接口支持多重继承)
    public void show1(){  //实现接口A中的show1()方法
    System.out.println("a="+a);
    }
    public void show2(){  //实现接口B中的show2()方法
    System.out.println("b="+b);
    }
    }public class Pro { public static void main(String[] args) {
    Y print=new Y();
    print.show1();   //调用show1()方法
    print.show2();   //调用show2()方法 }}Print
    a=5
    b=6
      

  9.   

    我也是初学者,说说我的想法,觉得implements一个接口就相当于extends一个类了,就是绕了个圈子实现了对多个类的继承,不知道这样想对不对?
      

  10.   

    这两天看了书,有些明白了.楼主所说的如果A implements Y 并且 B implements Y, A还是不能调用B的方法, 这两个类还是没有任何关系的. 接口本身是没有对象,不能被实现的.它包括final数据成员和abstract的方法成员, 只是规定了一些数据和方法的名字,或者说形式而已,至于具体的实现要在实现接口的类中进行, 楼主举的例子里, A 和 B之间的唯一关系就是它们都有一些相同的final数据量, 和名字一样的成员方法(不过内容就不一样了,各自进行了不同的重载)
      

  11.   

    我所理解的接口意义就像一种标准,其中定义了一些所有人都要遵守的共同法则, 比如规定所有海面上行驶的船只都必须有个名字叫**号, 而且都必须有国籍,排水量,型号等属性,每个船类的对象都要implements 船这个接口, 至于你具体的船叫什么,排水量是多少,型号是哪种就不管了,你自己随便改,有能耐改成航母也行.
      

  12.   

    接口是一个特殊的abstract,他的产生是为实现c++中的多重继承机制,与次同时,作为接口他还可以让工程实现并行开发。而从维护角度来说,他没有基类,不会有多层继承的烦恼,生成对象的时候不会生成父类对象,可以减少系统资源的使用和增加程序代码的弹性。
      

  13.   

    waterscript() :
    /*
    接口是特殊的抽象类:
    1. 接口中的字段(数据成员)默认被final修饰,而且必须初始化。
    2. 接口中的方法(函数成员)默认被abstract修饰。即必须是抽象方法。
    interface A{                     //定义接口 A
    final int a=5;          //定义a 初始化a=5
    abstract void show1();  //定义show1()抽象方法
    }interface B{              //定义接口 B
    int b=6;         //省略final修饰 初始化b=6
    void show2();    //省略abstract 定义show2()抽象方法
    }
    class Y implements A,B{         //Y类 同时 实现接口 A 和 B (接口支持多重继承)
    public void show1(){  //实现接口A中的show1()方法
    System.out.println("a="+a);
    }
    public void show2(){  //实现接口B中的show2()方法
    System.out.println("b="+b);
    }
    }public class Pro {public static void main(String[] args) {
    Y print=new Y();
    print.show1();   //调用show1()方法
    print.show2();   //调用show2()方法}}Print
    a=5
    b=6*/为什么还要接口,直接用实现类不行吗?
    class Y (){  
    int a=5;
    int b=6;    
    public void show1(){ 
    System.out.println("a="+a);
    }
    public void show2(){ 
    System.out.println("b="+b);
    }
    }
    public class Pro {public static void main(String[] args) {
    Y print=new Y();
    print.show1();   //调用show1()方法
    print.show2();   //调用show2()方法}接口给我们的好处 是什么?
    你的调用好象与接口没有关系?
    能否解释一下接口的好处。
      

  14.   

    java 交流群:36468871  高手请进!
      

  15.   

    定义一个借口  可以用 implements 实现这个接口  接口体现了java里的多态性  比如说接口里有一个抽象方法 aa(),你可以在不同的类里多次实现它,这是很灵活的,具体一点,比如计算图形面积。定义接口 interface area ,里面有个抽象方法areas ,让三角形类 class sanjiao 实现接口 area, 你就可以在类 sanjiao里实现 方法 areas ,计算出三角形的面积, 同样class zhengfang 正方形 也可以实现接口area ,在类里 实现方法 areas ,计算出正方形的面积. 不知道我这么说 搂住是否明白.