声明为接口类型,这在设计中叫向上转型。也运用到了java的运行时多态,虽然声明的时候用的是接口类型,但在获取对象实例的时候,返回给你的是一个实现了这个接口的实现类的实例,
ps = con.prepareStatement(sql);返回的就是一个实现了PreparedStatement接口的实现类的实例,您debug一下就可以看到。使用接口是为了更灵活,以后我换一个实现类,对您来说也是透明的,根本不需要知道的,如果您使用实现类声明,那您就要修改代码才能达到这样的效果。
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class Demo {
public static void main(String[] args){
Connection conn=null;
try{
conn = DBUtils.getConnection();
String sql = "select 'Hello'as a from dual";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getString(1));
}
rs.close();
st.close();
}catch(Exception e){
e.printStackTrace();
}finally{
DBUtils.close(conn);
}
}
}
不能抽象处理