Java中抽象類的作用及說明
Java抽象類
可以理解為一種約定工具,在代碼中抽象類在某種情況適合用來寫出大體框架,具體實現流程由抽象類事先定義完畢,具體實現過程可以定義抽象方法,而抽象方法交由子類去具體實現。
舉個例子
定義一個數據庫查詢的實現規范:
1、註冊驅動
2、獲取鏈接
3、執行查詢語句
其中execute()方法在抽象類中已經定義完畢,需要其餘三個方法來輔助實現,但是具體的註冊驅動、獲取鏈接、執行sql等方法就要放在不同的數據庫實現類中去完成
代碼如下:
import java.sql.Connection; /** * 數據庫鏈接抽象類 */ public abstract class AbstractDataBaseClass { /** * 註冊驅動 */ public abstract void registerDriver(); /** * 獲取鏈接 * @return */ public abstract Connection getConnection(); /** * 執行sql */ public abstract void executeSql(); public void execute(){ this.registerDriver(); this.getConnection(); this.executeSql(); } }
import java.sql.Connection; /** * oracle具體實現類 */ public class OracleDataBaseClass extends AbstractDataBaseClass { @Override public void registerDriver() { System.out.println("註冊oracle數據驅動"); } @Override public Connection getConnection() { System.out.println("獲取oracle數據庫鏈接"); return null; } @Override public void executeSql() { System.out.println("在oracle數據庫中執行sql"); } }
import java.sql.Connection; /** * mysql具體實現類 */ public class MysqlDataBaseClass extends AbstractDataBaseClass { @Override public void registerDriver() { System.out.println("註冊mysql數據驅動"); } @Override public Connection getConnection() { System.out.println("獲取mysql數據庫鏈接"); return null; } @Override public void executeSql() { System.out.println("在mysql數據庫中執行sql"); } }
public class DataBaseTest { public static void main(String[] args) { AbstractDataBaseClass mysql = new MysqlDataBaseClass(); mysql.execute(); System.out.println("----------------------------------------"); AbstractDataBaseClass oracle = new OracleDataBaseClass(); oracle.execute(); } }
執行結果:
註冊mysql數據驅動
獲取mysql數據庫鏈接
在mysql數據庫中執行sql
—————————————-
註冊oracle數據驅動
獲取oracle數據庫鏈接
在oracle數據庫中執行sql
抽象類的意義
抽象的意義:對代碼的維護和重用。
抽象類往往用來表征對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。
具體分析如下
1.因為抽象類不能實例化對象,所以必須要有子類來實現它之後才能使用。這樣就可以把一些具有相同屬性和方法的組件進行抽象,這樣更有利於代碼和程序的維護。
比如本科和研究生可以抽象成學生,他們有相同的屬性和方法。這樣當你對其中某個類進行修改時會受到父類的限制,這樣就會提醒開發人員有些東西不能進行隨意修改,這樣可以對比較重要的東西進行統一的限制,也算是一種保護,對維護會有很大的幫助。
2.當又有一個具有相似的組件產生時,隻需要實現該抽象類就可以獲得該抽象類的那些屬性和方法。
比如學校又新產生瞭專科生這類學生,那麼專科生直接繼承學生,然後對自己特有的屬性和方法進行補充即可。這樣對於代碼的重用也是很好的體現。
所以,Java中抽象類對於代碼的維護和重用有很好的幫助,也是Java面向對象的一個重要體現。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。