java中abstract詳解


 Abstract(抽象)可以修飾類、方法 


如果將一個類設置為abstract,則此類必須被繼承使用。此類不可生成對象,必須被繼承使用。 Abstract可以將子類的共性最大限度的抽取出來,放在父類中,以提高程序的簡潔性。 Abstract雖然不能生成對象,但是可以聲明,作為編譯時類型,但不能作為運行時類型。 Final和abstract永遠不會同時出現。  


當abstract用於修飾方法時,此時該方法為抽象方法,此時方法不需要實現,實現留給子類覆蓋,子類覆蓋該方法之后方法才能夠生效。  


注意比較: 
private void print(){};此語句表示方法的空實現。 
Abstract void print(); 此語句表示方法的抽象,無實現。  


如果一個類中有一個抽象方法,那么這個類一定為一個抽象類。 反之,如果一個類為抽象類,那么其中可能有非抽象的方法。  


如果讓一個非抽象類繼承一個含抽象方法的抽象類,則編譯時會發生錯誤。因為當一個非抽象類繼承一個抽象方法的時候,本着只有一個類中有一個抽象方法,那么這個類必須為抽象類的原則。這個類必須為抽象類,這與此類為非抽象沖突,所以報錯。  


所以子類的方法必須覆蓋父類的抽象方法。方法才能夠起作用。 


只有將理論被熟練運用在實際的程序設計的過程中之后,才能說理論被完全掌握! 


為了實現多態,那么父類必須有定義。而父類並不實現,留給子類去實現。此時可將父類定義成abstract類。如果沒有定義抽象的父類,那么編譯會出現錯誤。  
Abstract和static不能放在一起,否則便會出現錯誤。(這是因為static不可被覆蓋,而abstract為了生效必須被覆蓋。)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM