java中statement和preparedstatement都是接口,为什么能建立对象?
我看到一段代码是;Statementsta=conn.createStatement();Statement不是接口吗?接口也能建立对象sta??...
我看到一段代码是;
Statement sta=conn.createStatement();
Statement不是接口吗?接口也能建立对象sta?? 展开
Statement sta=conn.createStatement();
Statement不是接口吗?接口也能建立对象sta?? 展开
2个回答
2018-12-10
展开全部
jdbc这一套规范 被数据库厂商实现了 ,厂商中 实现了这些接口
例如:createStatement() 他在Connection 这个接口中,他已经被数据库厂商实现并且重写了 实际上 就是 多态中的 接口指向实现类 而sta实际上是实现类对象 。
下面举个列子: 我们定义一个接口和实现类 及 测试类
public interface Test {
void close();
Test createTest();//返回Test
}
//实现类
public class sxl implements Test {
@Override
public void close() {
System.out.println("我是一只小老虎");
}
@Override
public Test createTest() {
return new sxl();
}
}
这个类 实现了Test接口 并且重写了里面的方法可以看见createTest() 这个实现返回的是
Test的实现类
// 测试类
public class Mytest {
public static void main(String[] args) {
sxl s = new sxl();
Test t = s.createTest();
System.out.println( t );
}
}
Main方法中 产生了实现类对象 并且调用的createTest() 他的接收者是Test接口
这就是 多态中 接口指向实现类 打印 t 的结果为: test.sxl@dc8569 (test 这个test是sxl这个类的包) 可以看出是实现类的引用 。 希望对你有所帮助!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询