接口和抽象類有什么區(qū)別
你選擇使用接口和抽象類的依據(jù)是什么框产?
接口和抽象類的概念不一樣荐吵。接口是對動作的抽象,抽象類是對根源的抽象入撒。
抽象類表示的是隆豹,這個對象是什么。接口表示的是茅逮,這個對象能做什么璃赡。比如,男人献雅,女人碉考,這兩個類(如果是類的話……),他們的抽象類是人挺身。說明侯谁,他們都是人。
人可以吃東西章钾,狗也可以吃東西墙贱,你可以把“吃東西”定義成一個接口,然后讓這些類去實現(xiàn)它.
所以贱傀,在高級語言上惨撇,一個類只能繼承一個類(抽象類)(正如人不可能同時是生物和非生物),但是可以實現(xiàn)多個接口(吃飯接口窍箍、走路接口)串纺。
第一點. 接口是抽象類的變體丽旅,接口中所有的方法都是抽象的。而抽象類是聲明方法的存在而不去實現(xiàn)它的類纺棺。
第二點. 接口可以多繼承榄笙,抽象類不行
第三點. 接口定義方法,不能實現(xiàn)祷蝌,而抽象類可以實現(xiàn)部分方法茅撞。
第四點. 接口中基本數(shù)據(jù)類型為static 而抽類象不是的。
當你關注一個事物的本質(zhì)的時候巨朦,用抽象類米丘;當你關注一個操作的時候,用接口糊啡。
抽象類的功能要遠超過接口拄查,但是,定義抽象類的代價高棚蓄。因為高級語言來說(從實際設計上來說也是)每個類只能繼承一個類堕扶。在這個類中,你必須繼承或編寫出其所有子類的
所有共性梭依。雖然接口在功能上會弱化許多稍算,但是它只是針對一個動作的描述。而且你可以在一個類中同時實現(xiàn)多個接口役拴。在設計階段會降低難度的糊探。