Abstract(抽象)能夠修飾類、方法 spa
若是將一個類設置爲abstract,則此類必須被繼承使用。此類不可生成對象,必須被繼承使用。 Abstract能夠將子類的共性最大限度的抽取出來,放在父類中,以提升程序的簡潔性。 Abstract雖然不能生成對象,可是能夠聲明,做爲編譯時類型,但不能做爲運行時類型。 Final和abstract永遠不會同時出現。 設計
當abstract用於修飾方法時,此時該方法爲抽象方法,此時方法不須要實現,實現留給子類覆蓋,子類覆蓋該方法以後方法纔可以生效。 orm
注意比較:
private void print(){};此語句表示方法的空實現。
Abstract void print(); 此語句表示方法的抽象,無實現。 對象
若是一個類中有一個抽象方法,那麼這個類必定爲一個抽象類。 反之,若是一個類爲抽象類,那麼其中可能有非抽象的方法。 繼承
若是讓一個非抽象類繼承一個含抽象方法的抽象類,則編譯時會發生錯誤。由於當一個非抽象類繼承一個抽象方法的時候,本着只有一個類中有一個抽象方法,那麼這個類必須爲抽象類的原則。這個類必須爲抽象類,這與此類爲非抽象衝突,因此報錯。 接口
因此子類的方法必須覆蓋父類的抽象方法。方法纔可以起做用。 it
只有將理論被熟練運用在實際的程序設計的過程當中以後,才能說理論被徹底掌握! 編譯
爲了實現多態,那麼父類必須有定義。而父類並不實現,留給子類去實現。此時可將父類定義成abstract類。若是沒有定義抽象的父類,那麼編譯會出現錯誤。
Abstract和static不能放在一塊兒,不然便會出現錯誤。(這是由於static不可被覆蓋,而abstract爲了生效必須被覆蓋。)程序設計
abstract 和 接口類同樣
只不過接口類裏面的方法必須都被實現
而abstract類裏面的方法能夠不所有實現
須要那種就實現那種程序