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

