接口與抽象類的區(qū)別主要在變量和成員方法的區(qū)別
在JDK1.7版本中
接口
? ?1.成員變量
? ? ? ?只能是常量酪捡,默認(rèn)修飾為:public static final
? ?2.成員方法
? ? ? ?都是抽象的叁征,默認(rèn)修飾 public abstract;沒有構(gòu)造方法
抽象類
? ?1.成員變量
? ? ? ?因?yàn)槌橄箢愋枰焕^承逛薇,所有成員屬性不能為private捺疼,即對(duì)成員屬性可以用protected和public修飾,同時(shí)金刁,成員變量即可以為變量帅涂,也可以為常量议薪。
? ?2.成員方法
? ? ? ?可以有構(gòu)造方法尤蛮,方法修飾符不能為private,可以是抽象方法斯议,也可以是非抽象方法 (可以有方法的具體實(shí)現(xiàn))
在JDK1.8版本中
? ?對(duì)接口進(jìn)行一些修改产捞,在接口中可以定義靜態(tài)方法(只能通過接口調(diào)用,不能通過實(shí)現(xiàn)類的類名和對(duì)象調(diào)用)哼御,也可以定義默認(rèn)方法(有具體的實(shí)現(xiàn)坯临,JDK1.7中接口不能有具體方法的實(shí)現(xiàn)),但是必須用default修飾來修飾該方法
在JDK1.8版本中當(dāng)一個(gè)類同時(shí)實(shí)現(xiàn)兩個(gè)接口恋昼,但是兩個(gè)接口中定義了同樣的方法看靠,那么在這個(gè)類中必須重寫這個(gè)方法,否則編譯不會(huì)通過液肌。