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

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ì)提醒開發(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ā)的線程中斷的幾種方式詳解

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

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

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

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

    IntelliJ IDEA連接MySQL數(shù)據(jù)庫(kù)詳細(xì)圖解

    今天小編就為大家分享一篇關(guān)于intellij idea連接mysql數(shù)據(jù)庫(kù)詳細(xì)圖解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • 詳解IDEA使用Maven項(xiàng)目不能加入本地Jar包的解決方法

    詳解IDEA使用Maven項(xiàng)目不能加入本地Jar包的解決方法

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

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

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

    Spring注解@DependsOn解析

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

    詳解spring boot 以jar的方式啟動(dòng)常用shell腳本

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

    jenkins如何部署應(yīng)用到多個(gè)環(huán)境

    本文介紹了如何基于流水線的方式將應(yīng)用程序部署到多個(gè)環(huán)境,包括測(cè)試環(huán)境和生產(chǎn)環(huán)境,通過(guò)創(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
  • 淺談JVM之使用JFR解決內(nèi)存泄露

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

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

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

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

最新評(píng)論

宁晋县| 大丰市| 布尔津县| 手机| 菏泽市| 武山县| 诸城市| 东乡族自治县| 中牟县| 甘泉县| 廊坊市| 大兴区| 景东| 承德市| 沛县| 外汇| 花莲县| 葵青区| 澄江县| 岐山县| 新干县| 南昌市| 咸阳市| 萍乡市| 旬阳县| 昭通市| 安阳县| 沙田区| 乳山市| 玛多县| 崇义县| 芜湖市| 扎囊县| 太康县| 邢台县| 新蔡县| 安顺市| 金华市| 西林县| 南涧| 平度市|