这个接口在这个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());
}

}