面試精選5-接口和抽象類在開(kāi)發(fā)設(shè)計(jì)中如何選擇?
2022-09-22 10:20 作者:架構(gòu)風(fēng)清揚(yáng)-趣學(xué)旅程 | 我要投稿

這個(gè)問(wèn)題,要分JDK版本來(lái)區(qū)分回答:
1,語(yǔ)法層面
1.1,JDK1.8之前
抽象類:方法可以有抽象的,也可以有非抽象, 有構(gòu)造器
接口:方法都是抽象,屬性都是常量,默認(rèn)有public static final修飾
1.2,JDK1.8之后
接口里面可以有實(shí)現(xiàn)的方法,注意要在方法的聲明上加上default或者static
2,開(kāi)發(fā)設(shè)計(jì)層面
抽象類:同一類事物的抽取,比如針對(duì)Dao層操作的封裝,如,BaseDaoImpl,BaseServiceImpl
接口:通常更像是一種標(biāo)準(zhǔn)的制定,定制系統(tǒng)之間對(duì)接的標(biāo)準(zhǔn)規(guī)范
例子:
1,單體項(xiàng)目,分層開(kāi)發(fā),接口作為各層之間交互的紐帶,在controller中注入IUserService,在Service注入IUserDao
2,分布式項(xiàng)目,面向服務(wù)的開(kāi)發(fā),抽取服務(wù)service,這個(gè)時(shí)候,就會(huì)產(chǎn)生服務(wù)的提供者和服務(wù)的消費(fèi)者兩個(gè)角色
這兩個(gè)角色之間的紐帶,依然是接口
視頻解讀版鏈接:
標(biāo)簽: