在jdk的文档中,conection只是一个接口。
按我的理解,接口是一个完全的抽象类,应该是不能用来申明对象的,只能被继承的。
可是实例中的connection类都是可以用来申明对象的,请问一下是什么原因?

解决方案 »

  1.   

    这是mysql-connector-java-3.0.7-stable-bin.jar中的Connection.class反编译后的部分结果
    package com.mysql.jdbc;
    。// Referenced classes of package com.mysql.jdbc:
    //            DatabaseMetaData, NotImplemented, Statement, EscapeProcessor, 
    //            PreparedStatement, MysqlIO, ResultSet, Util, 
    //            SingleByteCharsetConverter, TimeUtil, CharsetMapping, NonRegisteringDriver, 
    //            Bufferpublic class Connection
        implements java.sql.Connection
    {
      可以看出其实现了java.sql.connection接口
      

  2.   

    Connection是接口不错。
    应用程序中可以创建一个实现该接口的实例,
    但我们从来不会写 Connection conn = new Connection()。我们写的是:Connection conn = DriverManager.getConnection(url)。
    这是因为DriverManager.getConnection(url)创建了一个实例,这个实例是哪个类的实例?不知道,我们只知道这个实例实现了Connection接口。这就够了!我们使用这个接口,就可以进行对那个实例的操作。
      

  3.   

    Connection是接口,有很多subclass,但都可以声明为Connection,因为所有的子类也都是基类,这个不冲突