抽象類

1.java
Abstract(抽象)可以修飾類、方法 
如果將一個類設置爲abstract,則此類必須被繼承使用。此類不可生成對象,必須被繼承使用。 Abstract可以將子類的共性最大限度的抽取出來,放在父類中,以提高程序的簡潔性。 Abstract雖然不能生成對象,但是可以聲明,作爲編譯時類型,但不能作爲運行時類型。 Final和abstract永遠不會同時出現。  
當abstract用於修飾方法時,此時該方法爲抽象方法,此時方法不需要實現,實現留給子類覆蓋,子類覆蓋該方法之後方法才能夠生效。  
注意比較: 
private void print(){};此語句表示方法的空實現。 
Abstract void print(); 此語句表示方法的抽象,無實現。  
如果一個類中有一個抽象方法,那麼這個類一定爲一個抽象類。 反之,如果一個類爲抽象類,那麼其中可能有非抽象的方法。  
如果讓一個非抽象類繼承一個含抽象方法的抽象類,但是這個非抽象類並沒有實現抽象方法,則編譯時會發生錯誤。因爲當一個非抽象類繼承一個抽象方法的時候,本着只要一個類中有一個抽象方法,那麼這個類必須爲抽象類的原則。這個類必須爲抽象類,這與此類爲非抽象衝突,所以報錯。  
所以子類的方法必須覆蓋父類的抽象方法。方法才能夠起作用。 
只有將理論被熟練運用在實際的程序設計的過程中之後,才能說理論被完全掌握! 
爲了實現多態,那麼父類必須有定義。而父類並不實現,留給子類去實現。此時可將父類定義成abstract類。如果沒有定義抽象的父類,那麼編譯會出現錯誤。  
Abstract和static不能放在一起,否則便會出現錯誤。(這是因爲static不可被覆蓋,而abstract爲了生效必須被覆蓋。)
轉載http://www.cnblogs.com/suneryong/p/3571362.html
2.C++
C++中沒有關鍵字來描述抽象,它在函數後添加 “=0”來指定該函數是抽象的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章