最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中抽象類的作用及說明

 更新時間:2022年11月21日 14:38:46   作者:代碼大師麥克勞瑞  
這篇文章主要介紹了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ā)的線程中斷的幾種方式詳解

    java高并發(fā)的線程中斷的幾種方式詳解

    這篇文章主要介紹了Java線程中斷機制幾種方法及示例,向大家分享了這幾種方法的介紹幾代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2021-10-10
  • Java并發(fā)編程之ReadWriteLock讀寫鎖的操作方法

    Java并發(fā)編程之ReadWriteLock讀寫鎖的操作方法

    這篇文章主要介紹了Java并發(fā)編程之ReadWriteLock讀寫鎖的操作方法,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • IntelliJ IDEA連接MySQL數(shù)據(jù)庫詳細圖解

    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包的解決方法

    這篇文章主要介紹了詳解IDEA使用Maven項目不能加入本地Jar包的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-08-08
  • 集合框架(Collections Framework)詳解及代碼示例

    集合框架(Collections Framework)詳解及代碼示例

    這篇文章主要介紹了集合框架(Collections Framework)詳解及代碼示例,文章涉及集合數(shù)組的區(qū)別,collection接口,iterator迭代器,list接口及其用法,LinkedHashSet集合等有關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Spring注解@DependsOn解析

    Spring注解@DependsOn解析

    今天要分享得是Spring的@DependsOn注解,對于@DependsOn,我們從它的名稱里面就能看出意思是“依賴于”,那么在Spring中,它的作用就是解決Bean的創(chuàng)建依賴,感興趣的小伙伴快來閱讀吧
    2023-04-04
  • 詳解spring boot 以jar的方式啟動常用shell腳本

    詳解spring boot 以jar的方式啟動常用shell腳本

    本篇文章主要介紹了詳解spring boot 以jar的方式啟動常用shell腳本,具有一定的參考價值,有興趣的可以了解一下
    2017-09-09
  • jenkins如何部署應(yīng)用到多個環(huán)境

    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
  • 淺談JVM之使用JFR解決內(nèi)存泄露

    淺談JVM之使用JFR解決內(nèi)存泄露

    內(nèi)存泄露的主要原因就是java中的對象生命周期有長有短。如果長生命周期的對象引用了短生命周期的對象,就有可能造成事實上的內(nèi)存泄露。本文將介紹JVM之使用JFR解決內(nèi)存泄露。
    2021-06-06
  • spring-security關(guān)于hasRole的坑及解決

    spring-security關(guān)于hasRole的坑及解決

    這篇文章主要介紹了spring-security關(guān)于hasRole的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論

太原市| 大余县| 和平区| 宣城市| 福清市| 武川县| 廊坊市| 八宿县| 会东县| 常德市| 峡江县| 墨玉县| 大埔县| 怀仁县| 肃南| 隆安县| 如东县| 凤山市| 沈丘县| 昌黎县| 安乡县| 保亭| 泾源县| 松阳县| 环江| 阳江市| 广宗县| 宜州市| 桦南县| 万源市| 大连市| 鄢陵县| 大渡口区| 北安市| 伊川县| 西充县| 海伦市| 周宁县| 永州市| 东兰县| 安康市|