本人是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();
}}
我在在学到多态的时候碰到这样一个问题:在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();
}}
你可以将CONN 打印 就知道 是那个 具体类了
就拿你的例子来说,我定义一个类专门负责创建A的实例。
public class Factory
{
public staic A getA()
{
return new B();
}
}这样我在外面就可以用 A a = Factory.getA(),来返回A的实例华对象了。
不就是那个Connection conn = DriverManager.getConnection()吗?
这个返回的接口引用就是这个xxx.yyy.zzzDriver的实例
jdbc的实现不仅仅只用到了接口,还有其他的,楼上的各位也已经讲过了。
Connection conn = DriverManager.getConnection("","","");
这一句也是可以这么理解的, conn这个接口的引用同样指向的是一个具体的对象,只是这个对象是由一个方法得到的。