天天看點

千鋒重慶Java學習怎麼在Java開發中選擇接口類和抽象類

在Java中,我們有接口和抽象類。在選擇哪一個時,我們會給出一些參數,比如選擇支援多個繼承的接口,或者選擇一個抽象類,在父類中提供一些有效的方法(盡管從Java8開始,我們也可以在接口中提供預設方法實作)。

什麼是抽象類?

抽象意味着某件事不是完全具體的——它隻是某件事的一個想法或要點。是以當我們談論抽象類時,它意味着一個本身沒有具體實作的類。這隻是為其他具體類建立的結構或指南。可以說抽象類是具體類的靈魂。這就是我們“擴充”抽象類的原因。抽象類應該隻有那些屬性和方法,沒有這些屬性和方法,具體類就不可能存在。

這就是Java不支援抽象類的多繼承的原因。因為一個具體類隻能表現(或擷取所有屬性)一個抽象類(顯然,一個實體不能有兩個靈魂)。

什麼是接口?

接口是不同系統之間的行為契約。在Java接口中,我們定義了一個類的行為,它将實作這個接口。一個類可以有許多不同的行為,這就是為什麼Java允許我們“實作”N個接口。接口僅用于提供行為。這就是Java命名約定建議使用形容詞作為接口名稱的原因。

與抽象類建立相關的關鍵要點:

在為具體類提供指導方針時建立抽象類。

抽象類的建立與是否提供任何方法的實作無關。

隻将這些屬性和行為添加到抽象類中,否則你的具體類将失去其存在性。

與界面建立相關的關鍵要點:

建立為具體類提供額外行為的接口。當我們将這些接口共享給外部系統時,它就變成了一個契約,這就是為什麼我們說接口是具體類的行為契約。

這些行為對你的班級來說不應該是強制性的。這些行為應該為類添加更多功能。