1012 數字分類
阿新 • • 發佈:2020-10-26
過載:
方法過載是讓類以統一的方式處理不同型別資料的一種手段。多個同名函式同時存在,具有不同的引數個數/型別。過載Overloading是一個類中多型性的一種表現。
Java的方法過載,就是在類中可以建立多個方法,它們具有相同的名字,但具有不同的引數和不同的定義。
呼叫方法時通過傳遞給它們的不同引數個數和引數型別來決定具體使用哪個方法, 這就是多型性。
(3) 過載的時候,方法名要一樣,但是引數型別和個數不一樣,返回值型別可以相同也可以不相同。無法以返回型別作為過載函式的區分標準。
重寫:
父類與子類之間的多型性,對父類的函式進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。
但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。
(2)若子類中的方法與父類中的某一方法具有相同的方法名、返回型別和引數表,則新方法將覆蓋原有的方法。
如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。
(3)子類函式的訪問修飾許可權不能少於父類的;
- 驅動:driver
- 設定驅動點:DriverManager
- 屬性(集合類):Properties
- 類載入器:Classloadr
- 獲取屬性:getProperties
- 連線:Connection
- 獲取連線:getConnection
JDBC工具類:
package jdbcutils.gj; import java.io.FileReader; import java.io.IOException; import java.net.URL; import java.sql.*; import java.util.Properties; //JDBC 工作類 public class JdbcUtils {/* 獲取連線, * */ //定義資料 static String url = null; static String user = null; static String password = null; static String driver = null; static { //靜態程式碼塊、讀取配置檔案 //1、properties 集合類 Properties pro = new Properties();//定義一個新的屬性 //2、載入檔案 try {//路徑不能寫死, //Classloadr 類載入器 ClassLoader classLoader = JdbcUtils.class.getClassLoader();//定一個新的類載入器 //動態獲取路徑 URL resoure = classLoader.getResource("jdbc.properties");//獲取網址 pro.load(new FileReader(resoure.getPath()));//載入新的動態路徑 } catch (IOException e) {//異常 e.printStackTrace(); } //3、獲取資料 url = pro.getProperty("url"); user = pro.getProperty("user"); password = pro.getProperty("password"); driver = pro.getProperty("driver"); //4、註冊驅動 try { Class.forName(driver);//driver:驅動 } catch (ClassNotFoundException e) { e.printStackTrace(); } } static public Connection getconection() throws SQLException { //不能寫死 return DriverManager.getConnection(url, user, password); } // 釋放 public static void close(Statement sta, Connection conn) { if (sta != null) { try { sta.close();//關閉 } catch (SQLException throwables) { throwables.printStackTrace(); } } if (conn != null) { try { conn.close();// 關閉 } catch (SQLException throwables) { throwables.printStackTrace(); } } } public static void close(ResultSet re, Statement sta, Connection conn) { if (re != null) { try { re.close();//關閉 } catch (SQLException e) { e.printStackTrace(); } } if (sta != null) { try { sta.close();//關閉 } catch (SQLException throwables) { throwables.printStackTrace(); } } if (conn != null) { try { conn.close();//關閉 } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
登入系統主程式:
package jdbcutils; import jdbcutils.gj.JdbcUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Scanner; public class 登入系統 { public static void main(String[] args) { // 1、錄入 使用者駛入的使用者名稱和密碼 Scanner sc = new Scanner(System.in); System.out.println("請輸入使用者名稱"); String username = sc.nextLine(); System.out.println("請輸入密碼"); String password = sc.nextLine(); // 2、呼叫方法 boolean flag = new 登入系統().login(username, password); System.out.println(flag); // 判斷輸出的是否正確,是否登入成功 if (flag) { System.out.println("登入成功"); } else { System.out.println("使用者名稱或密碼錯誤"); } } // 登入方法 public boolean login(String username, String password) { // 判斷密碼和使用者名稱是否有資料 if (username == null || password == null) { return false; } // 連線 Connection conn = null; // SQL語句 PreparedStatement preparedStatement = null; // 介面 ResultSet resultSet = null; try { // 連線工具類獲取裡面的資料 conn = JdbcUtils.getconection(); // 定義sql命令 String sql = "SELECT * FROM login WHERE user = ? AND password=?"; // 執行sql preparedStatement = conn.prepareStatement(sql); // 把輸入的資料變成SQL語句命令 preparedStatement.setString(1, username); preparedStatement.setString(2, password); // 執行SQL命令 resultSet = preparedStatement.executeQuery(); //返回執行後的 return resultSet.next(); // 異常 } catch (SQLException e) { e.printStackTrace(); } finally {// 釋放 JdbcUtils.close(resultSet, preparedStatement, conn);//工具類執行完畢關閉 } return false; } }