動力節(jié)點帶你快速了解Java抽象類和接口

動力節(jié)點帶你快速了解Java抽象類和接口

北大青鳥長沙麓谷校區(qū)      2022-04-12 08:28:01     10

動力節(jié)點帶你快速了解Java抽象類和接口,抽象是面向?qū)ο缶幊陶Z言的一大特征,也是對于Java初學(xué)者而言要重點理解的內(nèi)容。在Java中,可以通過兩種形式來體現(xiàn)OOP的抽象:接

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細(xì)介紹

抽象是面向?qū)ο缶幊陶Z言的一大特征,也是對于Java初學(xué)者而言要重點理解的內(nèi)容。在Java中,可以通過兩種形式來體現(xiàn)OOP的抽象:接口和抽象類。這兩者有太多相似的地方,又有太多不同的地方。很多人在初學(xué)的時候會以為它們可以隨意互換使用,但實際上并不是這樣。下面簡單介紹一下Java中的接口和抽象類。

1.Java抽象類

在了解抽象類之前,先來了解一下抽象方法。抽象方法是一種特殊的方法:它只有聲明,而沒有具體的實現(xiàn)。抽象方法的聲明格式為:

abstract void fun();

抽象方法必須用abstract關(guān)鍵字進行修飾。如果一個類含有抽象方法,則稱這個類為抽象類,抽象類必須在類前用abstract關(guān)鍵字修飾。因為抽象類中含有無具體實現(xiàn)的方法,所以不能用抽象類創(chuàng)建對象。

下面要注意一個問題:在《JAVA編程思想》一書中,將抽象類定義為“包含抽象方法的類”,但是后面發(fā)現(xiàn)如果一個類不包含抽象方法,只是用abstract修飾的話也是抽象類。也就是說抽象類不一定必須含有抽象方法。個人覺得這個屬于鉆牛角尖的問題吧,因為如果一個抽象類不包含任何抽象方法,為何還要設(shè)計為抽象類?所以暫且記住這個概念吧,不必去深究為什么。

[public] abstract class ClassName {abstract void fun();}

從這里可以看出,抽象類就是為了繼承而存在的,如果你定義了一個抽象類,卻不去繼承它,那么等于白白創(chuàng)建了這個抽象類,因為你不能用它來做任何事情。對于一個父類,如果它的某個方法在父類中實現(xiàn)出來沒有任何意義,必須根據(jù)子類的實際需求來進行不同的實現(xiàn),那么就可以將這個方法聲明為abstract方法,此時這個類也就成為abstract類了。

包含抽象方法的類稱為抽象類,但并不意味著抽象類中只能有抽象方法,它和普通類一樣,同樣可以擁有成員變量和普通的成員方法。注意,抽象類和普通類的主要有三點區(qū)別:

1)抽象方法必須為public或者protected(因為如果為private,則不能被子類繼承,子類便無法實現(xiàn)該方法),缺省情況下默認(rèn)為public。

2)抽象類不能用來創(chuàng)建對象;

3)如果一個類繼承于一個抽象類,則子類必須實現(xiàn)父類的抽象方法。如果子類沒有實現(xiàn)父類的抽象方法,則必須將子類也定義為為abstract類。

在其他方面,抽象類和普通的類并沒有區(qū)別。

2.Java接口

接口,英文稱作interface,在軟件工程中,接口泛指供別人調(diào)用的方法或者函數(shù)。從這里,我們可以體會到Java語言設(shè)計者的初衷,它是對行為的抽象。在Java中,定一個接口的形式如下:

[public] interface InterfaceName {}

接口中可以含有 變量和方法。但是要注意,接口中的變量會被隱式地指定為public static final變量(并且只能是public static final變量,用private修飾會報編譯錯誤),而方法會被隱式地指定為public abstract方法且只能是public abstract方法(用其他關(guān)鍵字,比如private、protected、static、 final等修飾會報編譯錯誤),并且接口中所有的方法不能有具體的實現(xiàn),也就是說,接口中的方法必須都是抽象方法。從這里可以隱約看出接口和抽象類的區(qū)別,接口是一種極度抽象的類型,它比抽象類更加“抽象”,并且一般情況下不在接口中定義變量。

要讓一個類遵循某組特地的接口需要使用implements關(guān)鍵字,具體格式如下:

class ClassName implements Interface1,Interface2,[....]{}

可以看出,允許一個類遵循多個特定的接口。如果一個非抽象類遵循了某個接口,就必須實現(xiàn)該接口中的所有方法。對于遵循某個接口的抽象類,可以不實現(xiàn)該接口中的抽象方法。

以上就是北大青鳥長沙麓谷校區(qū)java培訓(xùn)機構(gòu)的小編針對“北大青鳥長沙麓谷校區(qū)帶你快速了解Java抽象類和接口”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。