在Java中,我們有接口和抽象類。在選擇哪一個時,我們會給出一些參數,比如選擇支持多個繼承的接口,或者選擇一個抽象類,在父類中提供一些有效的方法(盡管從Java8開始,我們也可以在接口中提供默認方法實現)。想了解有關java更多詳細信息,建議參加Java培訓,通過系統全面的學習,可以快速提升自己。
什么是抽象類?
抽象意味著某件事不是完全具體的——它只是某件事的一個想法或要點。所以當我們談論抽象類時,它意味著一個本身沒有具體實現的類。這只是為其他具體類創(chuàng)建的結構或指南??梢哉f抽象類是具體類的靈魂。這就是我們“擴展”抽象類的原因。抽象類應該只有那些屬性和方法,沒有這些屬性和方法,具體類就不可能存在。
這就是Java不支持抽象類的多繼承的原因。因為一個具體類只能表現(或獲取所有屬性)一個抽象類(顯然,一個實體不能有兩個靈魂)。
什么是接口?
接口是不同系統之間的行為契約。在Java接口中,我們定義了一個類的行為,它將實現這個接口。一個類可以有許多不同的行為,這就是為什么Java允許我們“實現”N個接口。接口僅用于提供行為。這就是Java命名約定建議使用形容詞作為接口名稱的原因。在java培訓中,有很多關于抽象類和接口類的課程,在專業(yè)老師的面授教學指導下,你可以很快學會熟練運用這兩個類進行有效編程。
與抽象類創(chuàng)建相關的關鍵要點:
在為具體類提供指導方針時創(chuàng)建抽象類。
抽象類的創(chuàng)建與是否提供任何方法的實現無關。
只將這些屬性和行為添加到抽象類中,否則你的具體類將失去其存在性。
與界面創(chuàng)建相關的關鍵要點:
創(chuàng)建為具體類提供額外行為的接口。當我們將這些接口共享給外部系統時,它就變成了一個契約,這就是為什么我們說接口是具體類的行為契約。
這些行為對你的班級來說不應該是強制性的。這些行為應該為類添加更多功能。
問這樣一個問題:每當一個具體的類實現你的接口時,它需要接口中提到的所有行為,還是只需要很少的行為?在多個接口中重構你的接口,直到以上問題的答案是肯定的。
關于抽象類和接口類的問題是面試中很常見的問題,這兩者有太多相似的地方,又有太多不同的地方。很多初學者會把這兩者搞混淆,隨意互換使用,但實則不然。想要更深入學習如何使用抽象類和接口類,可以報名參加java培訓,有更加規(guī)范的課程和實戰(zhàn)項目,讓你快速掌握java知識和技能。