楼上~ 说的没错~ 我学J2SE时,老师是这么说的....
但是你看看java.sql包下的那些接口~~ 你使用他们的时候,有想过要多重继承吗???那些接口明显不是为了多重继承~

解决方案 »

  1.   

    楼上~ 
    是Class就有封装功能, 答案不合格
      

  2.   

    java为什么会有接口?
    接口不是为了封装,因为java已经有了更好的封装的技术,private,protected
    接口最大的作用在于:把实现和定义分开,这样在进行主装的时候,就不需要考虑具体的实现,那么接口就可以任意组合
    说到继承,继承只有一种情况下才考虑,就是需要上溯造型的时候。
      

  3.   

    今天刚刚给学生讲了Java中接口的问题,写下来与大家分享:在现实世界中有很多与接口等同的概念:USB接口:数码相机实现了USB接口,电脑通过USB接口与数码相机交换数据(使用USB接口)
    GUI(图形用户接口,也就是界面):
           软件开发人员实现了GUI后面的功能,软件用户通过GUI使用软件的功能(使用GUI)可见,接口帮助我们把实现与使用分开,再看看下面的程序:interface I {
      //接口中的方法都是抽象方法,接口是不能被实例化的
      public int add(int m, int n);  //接口中的方法只定义了能做什么,但没有定义怎么做
      static int MAX = 100;    //接口中还可以定义常量
    }//通过类G1实现了接口I,也就是把接口中的所有抽象方法进行了定义
    class G1 implements I {
      public int add(int m, int n){
        int r = m+n;
        return r;
      }
    }//通过类G2使用接口I
    class G2 {
      //什么样的实际参数可以传给m(m是接口I类型的引用)?
      //传过来的必须是实现了接口I的类G1类型的对象
      public void f (I m ,int s, int t ){
        int r = m.add(s,t);
        System.out.println(r);
      }
    }public class InterfaceTest {
      public static void main(String [] args){
        I x = new G1();
        G2 y = new G2();
        y.f(x,4,6);  //x是接口I的实现类G1类型的对象
      }
    }扩展:CoreJava里面的重要接口:Comparator, Comparable,Collection, Set, List, Map, DataSource, Connection, Statement, ResultSet, PreparedStatement等。在J2EE技术中接口也发挥着重要的作用,如Spring技术是基于接口的,EJB技术也是基于接口的。----------------
    BetterYou.com.cn
      

  4.   

    上楼的上楼 类G2的使用,长了见识。有时候连接数据库的时候,我使用定义接口的方法来定义连接数据库所要使用的URL,Driver,User,Password。
    而在类中把他们都定义成静态变量,使用的时候和用接口定义是一样的。
    那这两种方法哪种更好?还是都不行呢?
    尽管明白飞机和鸟都能飞,都有fly的方法,
    但什么时候该用接口还真不清楚。
      

  5.   

    java是不支持c++中的多重继承的,要实现的话只能用借口了
      

  6.   

    xiciliu,
    你回复中提到的情况,在接口定义常量,或者在类中定义常量,
    其实并没有什么本质的区别。BetterYou.com.cn
      

  7.   

    接口可以实现多重继承,但不并代表用接口就一定要多重继承,设计一个类为接口或说是虚类不光考虑眼前,如果在不是很必要的情况下一开始就设计成虚类,那以后想多重继承的时候岂不是就傻眼了,而JDK里的设计正是这样一种考虑,由于他的广泛被使用性,所以在设计的时候尽量设计成接口.现代的开发标准里也一般不推荐使用虚类,除非有非常重要的方法需要在父类里实现,否则都应该设计成接口.
      

  8.   

    接口倾向于技术(比如COM),倾向于设计模式,把功能的实现独立出去
    虚类倾向于多态,把功能的实现延迟
    他们的方向不同
      

  9.   

    接口倾向于定义一种规范。比如 jdbc 绝大部分定义成接口,就是定义了规范,各数据库厂商都要安装这个规范来提供jdbc驱动程序。接口离开了类,就什么都不是,只有依附于类,才能有作用。抽象类则不然,从本质上,抽象类是“类”,只是这个类定义的尚不完整,一些抽象方法需针对具体情况,才能确定如何实现。
      

  10.   

    有一本书,是这样说的:“接口是为了支持运行时动态方法解决而设计的,通常,为使一个方法可以在类间调用,两个类都必须出现在编译时间里,以便java编译器可以检查以确保方法调用是兼容的。这个需求导致了一个静态的不可扩展的类环境。在一个系统中不可避免会出现这类情况,函数在类层次中越堆越高,以至该机制可以为越来越多的子类可用。接口的设计避免了这个问题。它们把方法或方法系列的定义从类层次中分开。因为接口是在和类不同的层次中,与类层次无关的类实现相同的接口是可行的。这是实现接口的真正原因所在。”“注意:接口增添了很多应用程序所需的功能。在一些其它语言(例如C++)中,这些应用程序通常借助于多重继承来完成。”
      

  11.   

    我也要 说两句.上面多数讨论的是 有了接口或是虚类,才有什么样的特征、特点。 
    没有从问题层面回答,有什么样的条件和环境,才需要使用接口或虚类。trumplet(检查) 引用的内容是从正面回答了问题。
    但我还是没看明白为什么?