欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中抽象類的作用及說(shuō)明

 更新時(shí)間:2022年11月21日 14:38:46   作者:代碼大師麥克勞瑞  
這篇文章主要介紹了Java中抽象類的作用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java抽象類

可以理解為一種約定工具,在代碼中抽象類在某種情況適合用來(lái)寫出大體框架,具體實(shí)現(xiàn)流程由抽象類事先定義完畢,具體實(shí)現(xiàn)過(guò)程可以定義抽象方法,而抽象方法交由子類去具體實(shí)現(xiàn)。

舉個(gè)例子

定義一個(gè)數(shù)據(jù)庫(kù)查詢的實(shí)現(xiàn)規(guī)范:

1、注冊(cè)驅(qū)動(dòng)

2、獲取鏈接

3、執(zhí)行查詢語(yǔ)句

其中execute()方法在抽象類中已經(jīng)定義完畢,需要其余三個(gè)方法來(lái)輔助實(shí)現(xiàn),但是具體的注冊(cè)驅(qū)動(dòng)、獲取鏈接、執(zhí)行sql等方法就要放在不同的數(shù)據(jù)庫(kù)實(shí)現(xiàn)類中去完成

代碼如下:

import java.sql.Connection;
 
/**
 * 數(shù)據(jù)庫(kù)鏈接抽象類
 */
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ù)庫(kù)鏈接");
        return null;
    }
 
    @Override
    public void executeSql() {
        System.out.println("在oracle數(shù)據(jù)庫(kù)中執(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ù)庫(kù)鏈接");
        return null;
    }
 
    @Override
    public void executeSql() {
        System.out.println("在mysql數(shù)據(jù)庫(kù)中執(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ù)庫(kù)鏈接
在mysql數(shù)據(jù)庫(kù)中執(zhí)行sql
----------------------------------------
注冊(cè)oracle數(shù)據(jù)驅(qū)動(dòng)
獲取oracle數(shù)據(jù)庫(kù)鏈接
在oracle數(shù)據(jù)庫(kù)中執(zhí)行sql

抽象類的意義

抽象的意義:對(duì)代碼的維護(hù)和重用。

抽象類往往用來(lái)表征對(duì)問(wèn)題領(lǐng)域進(jìn)行分析、設(shè)計(jì)中得出的抽象概念,是對(duì)一系列看上去不同,但是本質(zhì)上相同的具體概念的抽象。

具體分析如下

1.因?yàn)槌橄箢惒荒軐?shí)例化對(duì)象,所以必須要有子類來(lái)實(shí)現(xiàn)它之后才能使用。這樣就可以把一些具有相同屬性和方法的組件進(jìn)行抽象,這樣更有利于代碼和程序的維護(hù)。

比如本科和研究生可以抽象成學(xué)生,他們有相同的屬性和方法。這樣當(dāng)你對(duì)其中某個(gè)類進(jìn)行修改時(shí)會(huì)受到父類的限制,這樣就會(huì)提醒開(kāi)發(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)文章

  • SpringBoot整合Redis、ApachSolr和SpringSession的示例

    SpringBoot整合Redis、ApachSolr和SpringSession的示例

    本篇文章主要介紹了SpringBoot整合Redis、ApachSolr和SpringSession的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • SpringBoot啟動(dòng)過(guò)程逐步分析講解

    SpringBoot啟動(dòng)過(guò)程逐步分析講解

    這篇文章主要介紹了SpringBoot啟動(dòng)過(guò)程的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • Mybatis使用大于等于或小于等于進(jìn)行比較

    Mybatis使用大于等于或小于等于進(jìn)行比較

    本文主要介紹了Mybatis使用大于等于或小于等于進(jìn)行比較,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • springboot 整合druid及配置依賴

    springboot 整合druid及配置依賴

    這篇文章主要介紹了springboot 整合druid及jdbc 依賴、數(shù)據(jù)庫(kù)依賴(mysql),druid 依賴的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • java輸入時(shí)如何通過(guò)回車(enter)來(lái)結(jié)束輸入

    java輸入時(shí)如何通過(guò)回車(enter)來(lái)結(jié)束輸入

    這篇文章主要介紹了java輸入時(shí)如何通過(guò)回車(enter)來(lái)結(jié)束輸入,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Spark調(diào)優(yōu)多線程并行處理任務(wù)實(shí)現(xiàn)方式

    Spark調(diào)優(yōu)多線程并行處理任務(wù)實(shí)現(xiàn)方式

    這篇文章主要介紹了Spark調(diào)優(yōu)多線程并行處理任務(wù)實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java實(shí)現(xiàn)追加內(nèi)容到文件末尾的常用方法分析

    java實(shí)現(xiàn)追加內(nèi)容到文件末尾的常用方法分析

    這篇文章主要介紹了java實(shí)現(xiàn)追加內(nèi)容到文件末尾的常用方法,結(jié)合具體實(shí)例分析了java文件流及寫入指針等相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • 解決Jackson解析嵌套類問(wèn)題(MismatchedInputException)

    解決Jackson解析嵌套類問(wèn)題(MismatchedInputException)

    這篇文章主要介紹了解決Jackson解析嵌套類問(wèn)題(MismatchedInputException),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Spring Boot Web應(yīng)用程序配置詳解

    Spring Boot Web應(yīng)用程序配置詳解

    這篇文章主要介紹了Spring Boot Web應(yīng)用程序配置詳解,本文中將介紹一些Web應(yīng)用程序最常用的配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 關(guān)于ReentrantLock的實(shí)現(xiàn)原理解讀

    關(guān)于ReentrantLock的實(shí)現(xiàn)原理解讀

    這篇文章主要介紹了關(guān)于ReentrantLock的實(shí)現(xiàn)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論