最近要做一个web app,其中要涉及到一段连接数据库的代码,我想把这些连接数据库的代码写在一个interface里,然后所有需要连接数据库的class都来implements它.问题就是,java中规定"interface中只能有方法的声明,不能有方法体",也就是说interface里的方法都是"空的",那么我之前想的方法就全泡汤了,根本不能把连接数据库的逻辑写进interface的方法中!只能给出方法的声明....但是,例如:象javax.servlet.servletContext接口里面的所有方法都是可以直接用的呀,那不就说明这些方法都有方法体吗?是不是interface中真的不能给出方法体呢?如果想实现我上面所说的目的,应该怎么做?希望高手指点
具体实现都是子类来实现的
你看到的
例如:象javax.servlet.servletContext接口里面的所有方法都是可以直接用的呀,那不就说明这些方法都有方法体吗?
都是利用了多态性
懂吗?
password=sa
url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=myDB
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
以上这些放在一个资源文件中,比如起名为config.properties然后写一个类专门用来绑定这个资源文件:
import java.util.*;public class PropertyFile {
public PropertyFile() {
} public static String getValue(String key) {
ResourceBundle rb = ResourceBundle.getBundle("config");
String temp = rb.getString(key);
return temp;
}}
接着再写一个类,用来获取数据库连接!
import java.sql.*;public class DBConnection {
public static Connection getConnection() {
Connection conn = null;
String username = PropertyFile.getValue("username");
String password = PropertyFile.getValue("password");
String url = PropertyFile.getValue("url");
String driver = PropertyFile.getValue("driver"); try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (SQLException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return conn;
}
}
2)可以声明变量,但必须指向子类或实现类的对象等等。
3)在接口中我们可以声明一个标记接口,在抽象类中我们也可以声明一个没有抽象方法的类作为抽象类。重要的区别:1)关于继承
Java语言不支持多重继承,也就是说一个子类只能有一个父类,但一个子类可以实现多个接口。2)接口比抽象类具有更广泛的应用,也提供了更多的灵活性。
3)接口内不能有实例字段,但抽象类中可以有实例字段及实现了的方法。
4)接口内的方法自动为public型,但在抽象类中的抽象方法必须手动声明访问标识符。