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。

推薦閱讀: