java中的抽象類和抽象方法

最近讀了好幾個關於java中抽象類和抽象方法的總結:

1.抽象類:注意以下幾個知識點

一、當一個類被聲明爲抽象類時,要在這個類前面加上修飾符abstract;

二、抽象類就是不能使用new方法進行實例化的類,即沒有具體實例對象的類;

三、抽象類有點類似“模板”的作用,目的是根據其格式來創建和修改新的類,但是對象不能由 抽象類直接創建,只可以通過抽象類派生出新的子類,再由其子類來創建對象;

四、在抽象類中的成員方法可以包括一般方法和抽象方法。


2.抽象方法:注意以下幾個知識點

一、抽象方法就是以abstract修飾的方法,這種方法只聲明返回的數據類型、方法名稱和所需的參數,沒 有方法體,也就是說抽象方法只需要聲明而不需要實現;

二、當一個方法爲抽象方法時,意味着這個方法必須被子類的方法所重寫,否則其子類的該方法仍然是 abstract的,而這個子類也必須是抽象的,即聲明爲abstract;

另外還需注意:

 一、抽象類中不一定包含抽象方法,但是包含抽象方法的類一定要被聲明爲抽象類。抽象類本身不具備實際的功能,只能用於派生其子類。抽象類中可以包含構造方法, 但是構造方法不能被聲明爲抽象。

二、 抽象類不能用final來修飾,即一個類不能既是最終類又是抽象類。
    abstract不能與private、static、final、native並列修飾同一個方法。


當一個子類繼承某個抽象類時,它可以有兩個選擇:

  • 部分實現或完全不實現父類的所有抽象方法,但此時子類必須聲明爲抽象類。
  • 實現父類所有的抽象方法,此時之類不比聲明爲抽象類。

抽象類不能被實例化(be instantiated),但可以實例化非抽象子類。

PS:抽象類 和接口的區別 :

  • 一個類可以實現任意多個接口,但最多隻能作爲一個抽象類的子類。
  • 一個抽象類可以有若干個抽象方法(但到少要有一個),而接口的所有方法都是抽象的,無論是否將它的方法顯示地聲明爲抽象的。
  • 一個抽象類可以聲明實例變量,其子類可以繼承這些實例變量。而一個接口不能聲明實例變量,不過接口可以聲明static final修飾域。
  • 抽象類可以有構造方法,而接口不能。
  • 抽象類的可見性修飾符可以是public、protected、private或無修飾符(表示包內可見);而接口的可見性修飾符只能是 public,或無修飾符(包內可見)。
  • 抽象類的方法的可見性修飾符可是以protected、private,或無(表示包內可見);而一個接口的方法的可見性修飾符只能是 public。
  • 抽象類是從object類派生而來,它繼承了object的clone()和equals()方法。
更多詳細內容可參見:http://blog.csdn.net/tsuliuchao/article/details/5423026
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章