Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@lxc-PC:1521:orcl", "scott", "tiger");
这里的getConnection 返回Connection类型  也就是说是返回一个接口类型 ? 接口也可以返回么  那么现在conn里面存储的是什么 

解决方案 »

  1.   

    当然可以返回接口类型这种编程方法在java的好几个设计模式中(比如装饰模式,代理模式)中都有很多应用。简单来讲,就是如果你设计了10个类都implement这个Connection接口,而且现在当你设计一个Database类中以Connection接口作为成员,public class Database{
        private Connection conn;    // setter
        public void setConn(Connection conn){
            this.conn=conn;
        }
        
        // getter
        public Connection getConn(){
            return this.conn;
        }
    }那么你所设计的这10个类都可以作为参数传入这个setter,而以getter返回的Connection对象也可以强制转换成你设计的类,前提是你知道这个Database对象中的conn成员确实是你所设计的类的类型Database db = new Database();
    MyPerseonalConnection myConn = (MyPerseonalConnection) db.getConn();
    这样的最大好处,就是大大简化代码的复杂度,逻辑上也便于理解,在于复杂的类当中,也便于设计彼此间的耦合。
      

  2.   

    Connection 接口 实现类的引用。
      

  3.   

    再回答“那么现在conn里面存储的是什么”通俗的说
    实现接口的类中的内容肯定比接口中的内容只多不少。比如接口中的方法很多没有内容只有一个“壳”,但是实现类中就有具体的内容了。这个“具体的内容” 依各类而不同,成为一种“个性”,所以不能成为一种“共性”作为参数。打个比方就和电脑的USB接口一个道理方法返回接口对象,其实就是返回一个USB插口给你(那个“壳”),本身USB接口不能做任何事情。具体的实现类负责做该做的事情,所以具体类负责设计此类到底是USB鼠标还是摄像头还是游戏手柄。但是USB接口的优点就是所有的这些USB设备都可以插入同一个插槽(利用那个“壳”),就如同可以作为接口对象传入方法
      

  4.   

    靠,不小心点了发帖,还没说完那么现在conn里面存储的,就是一个具体的类对象的指针,它在程序里的身份,不是USB鼠标,不是USB键盘,不是USB手柄,而是叫做“USB设备”(接口类型),但是其指向的内容和具体的设备没区别,在必要的时候只需要强制转换出来就好