Java超詳細講解抽象類的原理與用法

1. 抽象類是什麼

️給大傢上一篇小作文,看完這個,你就理解瞭什麼叫做抽象類

在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,並不是所有的類都是用來描繪對象的,

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

️思考一下抽象類和類在功能上什麼區別

因為抽象類是沒有足夠的信息去描繪一個具體的對象的,所以抽象類也就不能實例化對象

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

️既然這個抽象不能實例化對象,那麼該如何使用抽象類呢

既然不能實例化對象,那麼抽象類就隻能被繼承,才可以使用。

但是使用時,又要註意,因為繼承,父類是抽象的,所以父類包含子類集合的常見方法不能使用

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

2 抽象類的語法

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

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

這個方法沒有具體實現,又有abstract修飾,那麼把這個方法叫抽象方法

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

3 抽象類都有什麼特性

(1)抽象類是不能進行實例化的

看這段代碼就報錯瞭

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

抽象類和普通類不一樣的是,抽象類不能進行實例化

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

可以這麼認為,抽象類的作用是,用來被繼承的

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

被static和final所修飾,這是因為子類繼承要重寫

註意:抽象方法沒有加訪問限定符時,默認是public

(5)當一個普通類繼承這個抽象類之後,如果這個抽象類中包含抽象方法,

那麼需要重寫這個抽象方法,否則代碼會報錯

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

那麼此時這個抽象類A可以不重寫抽象類B中的抽象方法

我們先看這個,一個抽象方法,重寫一次

那再寫一個抽象方法,會不會報錯?答案是會報錯

所以我們需要再重寫一次,繼承這裡才不會報錯

️但這個每寫一個抽象方法,就要重寫一次,是不是比較麻煩,有什麼好的方法嗎?

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

寫成抽象類後,就不用一次一次重寫那麼麻煩瞭

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{    
}
}

所以,兩個都是抽象類後,就不用重寫就可以繼承瞭

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

4 抽象類是幹什麼的

比較通俗的說就是,抽象類是給程序員用來,防止出錯的,相當於報警器。

️為什麼會這麼說呢

比如這個不應該由父類完成, 而應由子類完成. 此時如果不小心用成父類瞭,

使用普通類編譯器是不會報錯的.

但是父類是抽象類就會在實例化的時候提示錯誤, 讓我們發現錯誤,進行修改

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

到此這篇關於Java超詳細講解抽象類的原理與用法的文章就介紹到這瞭,更多相關Java抽象類內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: