import java.sql.*;
public class ConnToDataBase
{
Connection con=null;
public Connection connToDB()
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
con=java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:FREEDOM", "scott","tiger");
}
catch(Exception e)
{
e.printStackTrace();
}
return con;
}
public static void main(String [] args)
{
ConnToDataBase db=new ConnToDataBase();
db.connToDB();//这句返回的是Connection接口,为何能运行通过?
System.out.println(db.connToDB().toString());
}
}关于java调用方法后,返回类型操作问题。上述程序db.connToDB()执行后,应返回Connection类型的接口,也就是说,应该执行Connection c=db.connToDB()操作才能通过编译,但是上述程序却能通过执行,何解?请指点
public class ConnToDataBase
{
Connection con=null;
public Connection connToDB()
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
con=java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:FREEDOM", "scott","tiger");
}
catch(Exception e)
{
e.printStackTrace();
}
return con;
}
public static void main(String [] args)
{
ConnToDataBase db=new ConnToDataBase();
db.connToDB();//这句返回的是Connection接口,为何能运行通过?
System.out.println(db.connToDB().toString());
}
}关于java调用方法后,返回类型操作问题。上述程序db.connToDB()执行后,应返回Connection类型的接口,也就是说,应该执行Connection c=db.connToDB()操作才能通过编译,但是上述程序却能通过执行,何解?请指点
----------------------------------
一个接口可以有多种实现····声明为接口类型其实返回的是一个接口的实现类···
ConnToDataBase db=new ConnToDataBase();
db.connToDB();//这句返回的是Connection接口,为何能运行通过?
System.out.println(db.connToDB().toString());
虽然能编译通过,但运行时因为 connToDB() 被调用了两次,那么事实上是建立了两个跟数据库的连接。这恐怕并不是你的初衷吧?
这个声明表明了con是类成员变量;只要在这个类中无论任何位置都起作用