在JDBC里面,statement只是一个接口并没有实现?那为什么能够创建statement对象?
2个回答
展开全部
先回答你的问题:
因为创建的statement对象是实现Statement接口的对象。
这是面向接口编程,是实现多态的一种方式。
为什么JDBC里面要定义一个Statement接口,而不是Statement的具体类。是因为数据库不同而造成的。Sun公司给各个数据库提供商提供一个统一的接口,就是规定好一些约束,让大家来做具体的实现。
比如MySQL和Oracle的驱动不同的,如果Sun公司不用接口用类把它实现了,那就麻烦大了,接口只是定出了一个协议,规定你必须实现什么,怎么实现的就不关心。
因为创建的statement对象是实现Statement接口的对象。
这是面向接口编程,是实现多态的一种方式。
为什么JDBC里面要定义一个Statement接口,而不是Statement的具体类。是因为数据库不同而造成的。Sun公司给各个数据库提供商提供一个统一的接口,就是规定好一些约束,让大家来做具体的实现。
比如MySQL和Oracle的驱动不同的,如果Sun公司不用接口用类把它实现了,那就麻烦大了,接口只是定出了一个协议,规定你必须实现什么,怎么实现的就不关心。
展开全部
在JDBC里面,statement只是一个接口并没有实现?那为什么能够创建statement对象?
不要思维定式在 Statement stmt = new Statement();才是创建对象 这种思维上.
创建对象方式有很多 我给你写了个类似的 名字也用了Statement不过只是个名字而已 真实的Statement实现方法你可以看源码,我的代码只是告诉你"创建对象方式有很多"
public interface Statement {
}
public class Preparedment implements Statement {
public static Statement getSatementInstance(){
return new Preparedment();
}
}
现在你可以用以下来创建 一个接口 的对象
Statement stm1 = Preparedment.getSatementInstance();
Statement stm2 = new Preparedment();
不要思维定式在 Statement stmt = new Statement();才是创建对象 这种思维上.
创建对象方式有很多 我给你写了个类似的 名字也用了Statement不过只是个名字而已 真实的Statement实现方法你可以看源码,我的代码只是告诉你"创建对象方式有很多"
public interface Statement {
}
public class Preparedment implements Statement {
public static Statement getSatementInstance(){
return new Preparedment();
}
}
现在你可以用以下来创建 一个接口 的对象
Statement stm1 = Preparedment.getSatementInstance();
Statement stm2 = new Preparedment();
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询