這是一個面試經(jīng)常會被問到的問題球昨,但是眨攘,如果理解了主慰,是非常簡單的問題。
很多人對抽象類與接口的區(qū)別只是在面試前看一下《面試寶典》期犬,然后一通死記硬背河哑,混過了面試,并沒有意義龟虎。花上幾分鐘鲤妥,就是幾分鐘的時間理解一下,就能把這個問題徹底搞清楚棉安。
抽象類與接口從本質(zhì)上說都是抽象。但不同的是衷模,他們抽象的對象不同。
抽象類是對事物的抽象阱冶,而接口是對動作的抽象刁憋。
舉個栗子:人與狗都是動物木蹬,都會吃東西。如果人與狗都是類的話镊叁,那么抽象為動物,就是抽象類疤苹。而人與狗所共同具有的動作“吃東西”就可以作為接口蛔添。
抽象類的功能要遠超過接口痰催,但是迎瞧,定義抽象類的代價高逸吵。因為高級語言來說(從實際設計上來說也是)每個類只能繼承一個類。在這個類中扫皱,你必須繼承或編寫出其所有子類的所有共性(動物做具有的性質(zhì)都是人與狗所共有的)。雖然接口在功能上會弱化許多韩脑,但是它只是針對一個動作的描述。而且你可以在一個類中同時實現(xiàn)多個接口段多。在設計階段會降低難度的首量。(也可以理解為进苍,接口只是更加細化的粒度)
從程序的角度看,他們具有以下的區(qū)別:
第一點. 接口是抽象類的變體觉啊,接口中所有的方法都是抽象的。而抽象類是聲明方法的存在而不去實現(xiàn)它的類勋乾。
第二點.?接口可以多繼承,抽象類不行
第三點.?接口定義方法辑莫,不能實現(xiàn),而抽象類可以實現(xiàn)部分方法摆昧。
第四點.?接口中基本數(shù)據(jù)類型為static 而抽類象不是的。
關注本質(zhì)使用抽象類伺帘,關注動作用接口。
每天進步一點點
推薦微信公眾號【排骨肉段】伪嫁,記錄日常的美好偶垮。