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

Java超詳細(xì)講解抽象類的原理與用法

 更新時(shí)間:2022年05月19日 10:27:14   作者:快到鍋里來呀  
對(duì)于面向?qū)ο缶幊虂碚f,抽象是它的一大特征之一,在Java中可以通過兩種形式來體現(xiàn)OOP的抽象:接口和抽象類,下面這篇文章主要給大家介紹了關(guān)于Java抽象類相關(guān)資料,需要的朋友可以參考下

1. 抽象類是什么

?給大家上一篇小作文,看完這個(gè),你就理解了什么叫做抽象類

在面向?qū)ο蟮母拍钪?,所有的?duì)象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對(duì)象的,

如果一個(gè)類中沒有包含足夠的信息來描繪一個(gè)具體的對(duì)象,這樣的類就是抽象類。

?思考一下抽象類和類在功能上什么區(qū)別

因?yàn)槌橄箢愂菦]有足夠的信息去描繪一個(gè)具體的對(duì)象的,所以抽象類也就不能實(shí)例化對(duì)象

除此之外,抽象類的其它功能都是存在的,成員變量,成員方法,構(gòu)造方法的訪問方法和類一樣。

?既然這個(gè)抽象不能實(shí)例化對(duì)象,那么該如何使用抽象類呢

既然不能實(shí)例化對(duì)象,那么抽象類就只能被繼承,才可以使用。

但是使用時(shí),又要注意,因?yàn)槔^承,父類是抽象的,所以父類包含子類集合的常見方法不能使用

一句話說明抽象類,那就是,不完整的類,只能繼承用

2 抽象類的語法

(1)使用abstract修飾的方法,叫抽象方法

(2)包含抽象方法的類,必須設(shè)計(jì)為抽象類,這個(gè)類也必須使用abstarct修飾

這個(gè)方法沒有具體實(shí)現(xiàn),又有abstract修飾,那么把這個(gè)方法叫抽象方法

abstract class Shape {
    //抽象方法
    public abstract void draw();
}

3 抽象類都有什么特性

(1)抽象類是不能進(jìn)行實(shí)例化的

看這段代碼就報(bào)錯(cuò)了

(2)抽象類中,可以有和普通類一樣的成員變量,成員方法,也可以有構(gòu)造方法

抽象類和普通類不一樣的是,抽象類不能進(jìn)行實(shí)例化

(3)抽象類不可以被實(shí)例化,但可以被繼承

可以這么認(rèn)為,抽象類的作用是,用來被繼承的

(4)抽象方法的訪問限定符不能是private,并且抽象方法也不能

被static和final所修飾,這是因?yàn)樽宇惱^承要重寫

注意:抽象方法沒有加訪問限定符時(shí),默認(rèn)是public

(5)當(dāng)一個(gè)普通類繼承這個(gè)抽象類之后,如果這個(gè)抽象類中包含抽象方法,

那么需要重寫這個(gè)抽象方法,否則代碼會(huì)報(bào)錯(cuò)

(6)如果一個(gè)抽象類?A繼承另一個(gè)抽象類B,

那么此時(shí)這個(gè)抽象類A可以不重寫抽象類B中的抽象方法

我們先看這個(gè),一個(gè)抽象方法,重寫一次

那再寫一個(gè)抽象方法,會(huì)不會(huì)報(bào)錯(cuò)?答案是會(huì)報(bào)錯(cuò)

所以我們需要再重寫一次,繼承這里才不會(huì)報(bào)錯(cuò)

?但這個(gè)每寫一個(gè)抽象方法,就要重寫一次,是不是比較麻煩,有什么好的方法嗎?

那就可以把繼承這里也寫成抽象類。

寫成抽象類后,就不用一次一次重寫那么麻煩了

abstract class Shape {
    public int a;
    public static int b;
    public void func() {
    }
    //抽象方法
    public abstract void draw();
    public abstract void draw2();
abstract class Rect extends Shape{    
}
}

所以,兩個(gè)都是抽象類后,就不用重寫就可以繼承了

(7)抽象類中不一定包含抽象方法,但是有抽象方法的類一定是抽象類

4 抽象類是干什么的

比較通俗的說就是,抽象類是給程序員用來,防止出錯(cuò)的,相當(dāng)于報(bào)警器。

?為什么會(huì)這么說呢

比如這個(gè)不應(yīng)該由父類完成, 而應(yīng)由子類完成. 此時(shí)如果不小心用成父類了,

使用普通類編譯器是不會(huì)報(bào)錯(cuò)的.

但是父類是抽象類就會(huì)在實(shí)例化的時(shí)候提示錯(cuò)誤, 讓我們發(fā)現(xiàn)錯(cuò)誤,進(jìn)行修改

所以說在合適的地方選用抽象類是比較有意義的

到此這篇關(guān)于Java超詳細(xì)講解抽象類的原理與用法的文章就介紹到這了,更多相關(guān)Java抽象類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot3.2.2整合MyBatis Plus3.5.5的詳細(xì)過程

    SpringBoot3.2.2整合MyBatis Plus3.5.5的詳細(xì)過程

    這篇文章給大家介紹了SpringBoot3.2.2整合MyBatis Plus3.5.5的詳細(xì)過程,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • Java三大特性-封裝知識(shí)小結(jié)

    Java三大特性-封裝知識(shí)小結(jié)

    所有的面向?qū)ο缶幊陶Z言的思路都是差不多的,而這三大特性,則是思路中的支柱點(diǎn),接下來我就重點(diǎn)講解了一下java三大特性-封裝,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-03-03
  • 一篇文章弄懂Java和Kotlin的泛型難點(diǎn)

    一篇文章弄懂Java和Kotlin的泛型難點(diǎn)

    這篇文章主要給大家介紹了如何通過一篇文章弄懂Java和Kotlin的泛型難點(diǎn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 一文帶你厲害Java設(shè)計(jì)模式中的模板方法

    一文帶你厲害Java設(shè)計(jì)模式中的模板方法

    模板方法定義了一個(gè)算法的步驟,并允許子類為一個(gè)或多個(gè)步驟提供實(shí)現(xiàn)。這篇文章就來帶大家了解一下Java模板方法的概念與實(shí)現(xiàn),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-01-01
  • Spring配置shiro時(shí)自定義Realm中屬性無法使用注解注入的解決辦法

    Spring配置shiro時(shí)自定義Realm中屬性無法使用注解注入的解決辦法

    今天小編就為大家分享一篇關(guān)于Spring配置shiro時(shí)自定義Realm中屬性無法使用注解注入的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • spring?Bean的初始化過程解析

    spring?Bean的初始化過程解析

    這篇文章主要介紹了spring?Bean的初始化過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • JAVA中實(shí)現(xiàn)原生的 socket 通信機(jī)制原理

    JAVA中實(shí)現(xiàn)原生的 socket 通信機(jī)制原理

    本篇文章主要介紹了JAVA中實(shí)現(xiàn)原生的 socket 通信機(jī)制原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • IntelliJ IDEA2021.1 配置大全(超詳細(xì)教程)

    IntelliJ IDEA2021.1 配置大全(超詳細(xì)教程)

    這篇文章主要介紹了IntelliJ IDEA2021.1 配置大全(超詳細(xì)教程),需要的朋友可以參考下
    2021-04-04
  • Java的編譯時(shí)錯(cuò)誤和運(yùn)行時(shí)錯(cuò)誤問題

    Java的編譯時(shí)錯(cuò)誤和運(yùn)行時(shí)錯(cuò)誤問題

    這篇文章主要介紹了Java的編譯時(shí)錯(cuò)誤和運(yùn)行時(shí)錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • javaweb實(shí)現(xiàn)app掃碼登錄功能

    javaweb實(shí)現(xiàn)app掃碼登錄功能

    這篇文章主要為大家詳細(xì)介紹了javaweb實(shí)現(xiàn)app掃碼登錄功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10

最新評(píng)論