Java中抽象類的作用及說明
Java抽象類
可以理解為一種約定工具,在代碼中抽象類在某種情況適合用來寫出大體框架,具體實現(xiàn)流程由抽象類事先定義完畢,具體實現(xiàn)過程可以定義抽象方法,而抽象方法交由子類去具體實現(xiàn)。
舉個例子
定義一個數(shù)據(jù)庫查詢的實現(xiàn)規(guī)范:
1、注冊驅(qū)動
2、獲取鏈接
3、執(zhí)行查詢語句
其中execute()方法在抽象類中已經(jīng)定義完畢,需要其余三個方法來輔助實現(xiàn),但是具體的注冊驅(qū)動、獲取鏈接、執(zhí)行sql等方法就要放在不同的數(shù)據(jù)庫實現(xiàn)類中去完成
代碼如下:
import java.sql.Connection;
/**
* 數(shù)據(jù)庫鏈接抽象類
*/
public abstract class AbstractDataBaseClass {
/**
* 注冊驅(qū)動
*/
public abstract void registerDriver();
/**
* 獲取鏈接
* @return
*/
public abstract Connection getConnection();
/**
* 執(zhí)行sql
*/
public abstract void executeSql();
public void execute(){
this.registerDriver();
this.getConnection();
this.executeSql();
}
}import java.sql.Connection;
/**
* oracle具體實現(xiàn)類
*/
public class OracleDataBaseClass extends AbstractDataBaseClass {
@Override
public void registerDriver() {
System.out.println("注冊oracle數(shù)據(jù)驅(qū)動");
}
@Override
public Connection getConnection() {
System.out.println("獲取oracle數(shù)據(jù)庫鏈接");
return null;
}
@Override
public void executeSql() {
System.out.println("在oracle數(shù)據(jù)庫中執(zhí)行sql");
}
}import java.sql.Connection;
/**
* mysql具體實現(xiàn)類
*/
public class MysqlDataBaseClass extends AbstractDataBaseClass {
@Override
public void registerDriver() {
System.out.println("注冊mysql數(shù)據(jù)驅(qū)動");
}
@Override
public Connection getConnection() {
System.out.println("獲取mysql數(shù)據(jù)庫鏈接");
return null;
}
@Override
public void executeSql() {
System.out.println("在mysql數(shù)據(jù)庫中執(zhí)行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();
}
}執(zhí)行結(jié)果:
注冊mysql數(shù)據(jù)驅(qū)動
獲取mysql數(shù)據(jù)庫鏈接
在mysql數(shù)據(jù)庫中執(zhí)行sql
----------------------------------------
注冊oracle數(shù)據(jù)驅(qū)動
獲取oracle數(shù)據(jù)庫鏈接
在oracle數(shù)據(jù)庫中執(zhí)行sql
抽象類的意義
抽象的意義:對代碼的維護和重用。
抽象類往往用來表征對問題領(lǐng)域進行分析、設(shè)計中得出的抽象概念,是對一系列看上去不同,但是本質(zhì)上相同的具體概念的抽象。
具體分析如下
1.因為抽象類不能實例化對象,所以必須要有子類來實現(xiàn)它之后才能使用。這樣就可以把一些具有相同屬性和方法的組件進行抽象,這樣更有利于代碼和程序的維護。
比如本科和研究生可以抽象成學(xué)生,他們有相同的屬性和方法。這樣當你對其中某個類進行修改時會受到父類的限制,這樣就會提醒開發(fā)人員有些東西不能進行隨意修改,這樣可以對比較重要的東西進行統(tǒng)一的限制,也算是一種保護,對維護會有很大的幫助。
2.當又有一個具有相似的組件產(chǎn)生時,只需要實現(xiàn)該抽象類就可以獲得該抽象類的那些屬性和方法。
比如學(xué)校又新產(chǎn)生了??粕@類學(xué)生,那么專科生直接繼承學(xué)生,然后對自己特有的屬性和方法進行補充即可。這樣對于代碼的重用也是很好的體現(xiàn)。
所以,Java中抽象類對于代碼的維護和重用有很好的幫助,也是Java面向?qū)ο蟮囊粋€重要體現(xiàn)。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java并發(fā)編程之ReadWriteLock讀寫鎖的操作方法
這篇文章主要介紹了Java并發(fā)編程之ReadWriteLock讀寫鎖的操作方法,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
IntelliJ IDEA連接MySQL數(shù)據(jù)庫詳細圖解
今天小編就為大家分享一篇關(guān)于intellij idea連接mysql數(shù)據(jù)庫詳細圖解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10
詳解IDEA使用Maven項目不能加入本地Jar包的解決方法
這篇文章主要介紹了詳解IDEA使用Maven項目不能加入本地Jar包的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-08-08
集合框架(Collections Framework)詳解及代碼示例
這篇文章主要介紹了集合框架(Collections Framework)詳解及代碼示例,文章涉及集合數(shù)組的區(qū)別,collection接口,iterator迭代器,list接口及其用法,LinkedHashSet集合等有關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。2017-11-11
詳解spring boot 以jar的方式啟動常用shell腳本
本篇文章主要介紹了詳解spring boot 以jar的方式啟動常用shell腳本,具有一定的參考價值,有興趣的可以了解一下2017-09-09
jenkins如何部署應(yīng)用到多個環(huán)境
本文介紹了如何基于流水線的方式將應(yīng)用程序部署到多個環(huán)境,包括測試環(huán)境和生產(chǎn)環(huán)境,通過創(chuàng)建項目、設(shè)置參數(shù)、配置流水線、設(shè)置環(huán)境變量、配置Maven工具、構(gòu)建階段、部署測試環(huán)境和生產(chǎn)環(huán)境、以及清理階段,實現(xiàn)了自動化部署流程2024-11-11
spring-security關(guān)于hasRole的坑及解決
這篇文章主要介紹了spring-security關(guān)于hasRole的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09

