尚學堂【官網】-西安Java培訓|c++培訓|Android培訓|安卓培訓|java視頻教程|軟件工程師|-西安雁塔尚學堂計算機學校
常見問題  尚學堂首頁新聞公告常見問題

抽象類和接口的區別是什么?

www.mdxlln.live 發布人:java  |  來自:本站  |  發布時間:2017-08-28 15:46:00  |  點擊次數:1484

  抽象類和接口的區別是什么?西安尚學堂專業的講師給大家介紹下抽象類和接口的區別可以概括為兩個層面的區別,下面介紹一下這兩者的區別。

  一,語法層面上的區別:

  1)抽象類可以提供成員方法的實現細節,而接口中只能存在publicabstract方法;

  2)抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是publicstaticfinal類型的;

  3)接口中不能含有靜態代碼塊以及靜態方法,而抽象類可以有靜態代碼塊和靜態方法;

  4)一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。  

  二,設計層面上的區別:

  1)抽象類是對一種事物的抽象,即對類抽象,而接口是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性、行為,但是接口卻是對類局部(行為)進行抽象。繼承是一個"是不是"的關系,而接口實現則是"有沒有"的關系。如果一個類繼承了某個抽象類,則子類必定是抽象類的種類,而接口實現則是有沒有、具備不具備的關系,比如鳥是否能飛(或者是否具備飛行這個特點),能飛行則可以實現這個接口,不能飛行就不實現這個接口。

  2)設計層面不同,抽象類作為很多子類的父類,它是一種模板式設計。而接口是一種行為規范,它是一種輻射式設計。什么是模板式設計?最簡單例子,大家都用過ppt里面的模板,如果用模板A設計了pptB和pptC,pptB和pptC公共的部分就是模板A了,如果它們的公共部分需要改動,則只需要改動模板A就可以了,不需要重新對pptB和pptC進行改動。而輻射式設計,比如某個電梯都裝了某種報警器,一旦要更新報警器,就必須全部更新。也就是說對于抽象類,如果需要添加新的方法,可以直接在抽象類中添加具體的實現,子類可以不進行變更;而對于接口則不行,如果接口進行了變更,則所有實現這個接口的類都必須進行相應的改動。

  以上就是尚學堂專業老師針對抽象類和接口的區別做的詳細介紹,如果您還有什么問題或建議請與我們的專業老師一對一交流。

尚學堂java培訓

當前文:抽象類和接口的區別是什么?
上一頁:Android開發5大布局方式之一“線性布局”詳解
下一頁:深入Java關鍵字null
在線報名(*為必填項)
2019刘佰温白小姐一马一肖