这个接口在这个java程序中是如何实例化的?
输出:这个接口在这个java程序中是如何实例化的?,java,interface,Java,Interface,输出: package jdbc; import java.sql.*; public class Mango { public static void main(String[] args) throws Exception { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con = DriverManager.getConnection("jdbc:oracle:
package jdbc;
import java.sql.*;
public class Mango {
public static void main(String[] args) throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@66.66.66.128:1521:xe","SYSTEM","matrix");
Statement comm = con.createStatement();
comm.executeQuery("insert into a values('a',1)");
ResultSet res = comm.executeQuery("SELECT * FROM A");
comm.executeQuery("insert into a values('a',1)");
while(res.next()) {
System.out.println(res.getString(1) + " " + res.getInt(2));
}
System.out.println("con class is "+ con.getClass());
System.out.println("comm class is "+ comm.getClass());
System.out.println("res class is "+ res.getClass());
}
}
T4CConnection实现接口连接
T4CStatement实现接口语句
OracleResultSetImpl实现接口结果集
若连接、语句和结果集是接口的,那个么我怎样才能调用它们呢?我读到我永远不能实例化一个接口,但看看下面这个程序…接口本身并没有实例化。相反,实现这些接口的类是 示例代码:
con class is class oracle.jdbc.driver.T4CConnection
comm class is class oracle.jdbc.driver.T4CStatement
res class is class oracle.jdbc.driver.OracleResultSetImpl
import java.util.ArrayList;
导入java.util.List;
公共类接口{
/**
*@param args
*/
公共静态void main(字符串[]args){
列表=新的ArrayList();
System.out.println(“list类是”+list.getClass());
}
}
输出:
列表类是类java.util.ArrayList
请注意,
list
的类是ArrayList
,而不是list
。这表明接口并没有像已经声明的那样实例化。从方法getConnection()
,createStatement()
等返回的对象是接口的实例。这意味着实现接口中的方法,并在使用适当的类型和instanceof
时返回true
所有接口都是100%抽象的,这意味着这些方法中没有代码,只有方法签名。您的类或其超类必须实现接口中的所有方法。这是Java对多重继承的解决方案,以避免对调用哪个方法实现造成混淆。它允许一个对象同时像多个类型一样工作,但只允许一个直接超类 您还可以发布运行代码时得到的输出吗?“我们如何像下面那样直接实例化接口?”您指的是什么代码?仔细看看您的代码,您正在实例化实现接口的类,而不是接口本身!请注意,程序的输出并不表示接口已实例化。输出显示了实现接口的具体类。此外,如果您喜欢助记符,您可以对接口使用“is-a”,对属性使用“has-a”。例如,
oracle.jdbc.driver.T4CConnection
是一个连接,而DriverManager
有一个连接。
import java.util.ArrayList;
import java.util.List;
public class Interfaces {
/**
* @param args
*/
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
System.out.println("list class is " + list.getClass());
}
}