學(xué)習(xí)啦>知識(shí)大全>知識(shí)百科>百科知識(shí)>

java中什么是抽象

時(shí)間: 歐東艷656 分享

  一.抽象類

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

  

  abstract void fun();

  抽象方法必須用abstract關(guān)鍵字進(jìn)行修飾。如果一個(gè)類含有抽象方法,則稱這個(gè)類為抽象類,抽象類必須在類前用abstract關(guān)鍵字修飾。因?yàn)槌橄箢愔泻袩o具體實(shí)現(xiàn)的方法,所以不能用抽象類創(chuàng)建對(duì)象。

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

  [public] abstract class ClassName {

  abstract void fun();

  }

  從這里可以看出,抽象類就是為了繼承而存在的,如果你定義了一個(gè)抽象類,卻不去繼承它,那么等于白白創(chuàng)建了這個(gè)抽象類,因?yàn)槟悴荒苡盟鼇碜鋈魏问虑?。?duì)于一個(gè)父類,如果它的某個(gè)方法在父類中實(shí)現(xiàn)出來沒有任何意義,必須根據(jù)子類的實(shí)際需求來進(jìn)行不同的實(shí)現(xiàn),那么就可以將這個(gè)方法聲明為abstract方法,此時(shí)這個(gè)類也就成為abstract類了。

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

  1)抽象方法必須為public或者protected(因?yàn)槿绻麨閜rivate,則不能被子類繼承,子類便無法實(shí)現(xiàn)該方法),缺省情況下默認(rèn)為public。

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

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

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

java中什么是抽象

一.抽象類 在了解抽象類之前,先來了解一下抽象方法。抽象方法是一種特殊的方法:它只有聲明,而沒有具體的實(shí)現(xiàn)。抽象方法的聲明格式為: abstract void fun(); 抽象方法必須用abstract關(guān)鍵字進(jìn)行修飾。如果一個(gè)類含有抽象方法,則稱這
推薦度:
點(diǎn)擊下載文檔文檔為doc格式

精選文章

  • java中什么是內(nèi)部類介紹
    java中什么是內(nèi)部類介紹

    java內(nèi)部類 內(nèi)部類學(xué)習(xí) 所謂內(nèi)部類(Inner Class),顧名思義,就是指定義在另外一個(gè)類中的類,我們?yōu)槭裁匆@么做呢?為什么不直接定義它而要在別的類中定

  • java中什么是重載
    java中什么是重載

    重載,簡(jiǎn)單說,就是函數(shù)或者方法有同樣的名稱,但是參數(shù)列表不相同的情形,這樣的同名不同參數(shù)的函數(shù)或者方法之間,互相稱之為重載函數(shù)或者方法。

  • java什么是棧
    java什么是棧

    棧(stack)又名堆棧,它是一種運(yùn)算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。這一端被稱為棧頂,相對(duì)地,把另一端稱為棧底。向一個(gè)

  • java什么是引用類型
    java什么是引用類型

    引用類型 由類型的實(shí)際值引用(類似于指針)表示的數(shù)據(jù)類型。如果為某個(gè)變量分配一個(gè)引用類型,則該變量將引用(或指向)原始值。不創(chuàng)建任何副本。引用

245923