jdbc中 java.sql包 定义了connection接口 接口里面不是说全部都是空方法吗 ,没有任何实现
所以  connection 不能 new connection()对象 需要 DriverManager.getconnection() 返回 conn对象
那conn为什么能执行conn.close()方法?我也没有重写close()方法啊  close()不是一个空方法吗  ...类似情况API中还有很多 不知道为什么能调用而不需要重写 ,请高手解释下
  谢谢大家,
jdbc

解决方案 »

  1.   

    以后遇到这种问题 多看看源代码吧 追踪一下 我用mysql举例说明下 最后返回的是这个 Connection newConn = com.mysql.jdbc.ConnectionImpl.getInstance(host(props), port(props), props, database(props), url);close的 最终的实现在这个类里 ConnectionImpl
      

  2.   

    其实 java这样做只是定义了一个接口规范,具体的实现由各个数据库厂商来负责 
      

  3.   

    DriverManager 返回的是一个实现了 Connection 接口的类的一个实例用 System.out.println() 打印这些信息,你会了解更多
    conn.getClass().getName();
    conn.getClass().getInterfaces(); // 返回数组
      

  4.   

    查看源代码是最好的办法!!或者看api
      

  5.   

    关键点在于:
        1. Connection是接口,方法如你所说全是空的
        2. DriverManager.getconnection() 返回的是一个对象,该对象继承自Connection接口
        3. 继承自Connection对象的意思是,重写了接口里面的方法