java抽象類

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

abstract void fun();
  抽象方法必須用abstract關鍵字進行修飾。如果一個類含有抽象方法,則稱這個類爲抽象類,抽象類必須在類前用abstract關鍵字修飾。因爲抽象類中含有無具體實現的方法,所以不能用抽象類創建對象。

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

[public] abstract class ClassName {
abstract void fun();
}
  從這裏可以看出,抽象類就是爲了繼承而存在的,如果你定義了一個抽象類,卻不去繼承它,那麼等於白白創建了這個抽象類,因爲你不能用它來做任何事情。對於一個父類,如果它的某個方法在父類中實現出來沒有任何意義,必須根據子類的實際需求來進行不同的實現,那麼就可以將這個方法聲明爲abstract方法,此時這個類也就成爲abstract類了。

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

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

  2)抽象類不能用來創建對象;

  3)如果一個類繼承於一個抽象類,則子類必須實現父類的抽象方法。如果子類沒有實現父類的抽象方法,則必須將子類也定義爲爲abstract類。

  在其他方面,抽象類和普通的類並沒有區別。

抽象類的意義:
比如說人和狗都屬於動物,這裏“動物”是抽象類,“人”和“狗”是“動物”的實體子類,動物都會“走路”,“走路”這個方法在“動物”類中沒有具體實現(抽象方法),因爲不同的動物表現出來的“走路”方法是不同的,比如這個例子中,“人”是二條腿走路,“狗”是四條腿走路,所以這種具體差異就需要在子類中重寫,否則“人”和“狗”就沒區別了。
建議去系統的閱讀“java的多態性”,這些是基本概念。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章