本人是Java初学者,还望高手轻点拍砖。。
  我在在学到多态的时候碰到这样一个问题:在JDBC中,Connection conn = DriverManager.getConnection("","","");
  为什么这个方法可以返回一个接口的引用,接口的引用不是指向具体实现其方法的那个类的吗?例如
interface A{
   void print();

class B implements A{
   void print(){
     System.out.println("this is a test!!");   }
}
public class MainClass{
   public static void main(String args[]){
       A a = new B();
       a.print();
    }}

解决方案 »

  1.   

    返回接口,好处很多,不用关心具体的类。
    你可以将CONN 打印 就知道 是那个 具体类了
      

  2.   

    好处确实很多,要慢慢体会。不过对于新手来说,你只要晓得不管是父类还是接口,都可以用这种形式来返回,这是JAVA的机制,你会慢慢发现它的好处的
      

  3.   

    这是典型的一个工厂设计模式啊!
    就拿你的例子来说,我定义一个类专门负责创建A的实例。
    public class Factory
    {
        public staic A getA()
        {
           return new B();
        }
    }这样我在外面就可以用 A a = Factory.getA(),来返回A的实例华对象了。
    不就是那个Connection conn = DriverManager.getConnection()吗?
      

  4.   

    你在学习JDBC时,还应该看到一个 Class.forName(xxx.yyy.zzzDriver);
    这个返回的接口引用就是这个xxx.yyy.zzzDriver的实例
      

  5.   

    这里使用接口的好处是可以让任何数据库厂商可以按照JDBC的规范进行定义,这样就能兼容任何数据库厂商提供的JDBC驱动了。
      

  6.   

    貌似lz没有深刻体会到接口的意思。。
    jdbc的实现不仅仅只用到了接口,还有其他的,楼上的各位也已经讲过了。
      
      

  7.   

    既然 A a = new B();这一句你可以理解成接口的引用指向具体的对象,那么
    Connection conn = DriverManager.getConnection("","","");
    这一句也是可以这么理解的, conn这个接口的引用同样指向的是一个具体的对象,只是这个对象是由一个方法得到的。
      

  8.   

    sun没有为JDBC实现不同的数据库的实现不一样 一样的是标准  接口就是标准  
      

  9.   

    刚开始java培训,我感觉多态还是很好用的。