1、Java接口
Java接口是接口一種完全抽象的類(lèi),它只包含抽象??方法和常量,和抽接口中(zhong)的象類(lèi)抽象方法必須是公共的、無(wú)返回值的區別、默認方法(Java 8及(?_?;)以上版本)或帶有default關(guān)鍵??字的接口方法,接(jie)口不能包含實(shí)例變量,和抽但可以包含靜態(tài)常量,象類(lèi)接口的實(shí)現類(lèi)需要實(shí)現接口中的所有方法。
2、Java抽象類(lèi)
Java抽象類(lèi)是一種特殊的類(lèi),它不能被實(shí)例化,只能被繼承,抽象類(lèi)可以包含抽象方法和非抽象方法,抽象方法在抽象類(lèi)中沒(méi)有具體實(shí)現,需要在??子類(lèi)中實(shí)現,抽象類(lèi)可以包含實(shí)例變量和靜態(tài)常量,子類(lèi)繼承抽象(xiang)類(lèi)時(shí),必須實(shí)現抽象類(lèi)中的所有抽象方法。
1、可實(shí)例化性
接口不能被實(shí)例化,只能被引用,抽象類(lèi)可以被實(shí)例化,但不能被繼承,這是因為接口的目的是為了定義一組行為的規范,而不是為了表示一個(gè)具體的對象,而抽象類(lèi)則是為了表示一個(gè)具有某些特征?和行為的對象。
2、繼承
接口可以被多個(gè)類(lèi)實(shí)現,?一個(gè)類(lèi)可以實(shí)現多個(gè)接口,一個(gè)類(lèi)只能繼承一個(gè)抽象類(lèi),但可以實(shí)現多個(gè)接口,這是因為接口是一種多態(tài)的表現(xian)形式,一個(gè)類(lèi)可以選擇實(shí)現多個(gè)接口來(lái)實(shí)現多種行為,而抽象類(lèi)則是一種結構表ヽ(′?`)ノ現形式,一個(gè)類(lèi)只能繼承一個(gè)抽象類(lèi)來(lái)繼承其特征和行為。
3、方法
接口中的方法都是抽象的,沒(méi)有具體實(shí)現,抽象類(lèi)中可以包含具體的方法和抽象的方法,接口中的方法默認都是pubヽ(′▽?zhuān)?ノlic abstract的,而抽象類(lèi)中的方法可以是public、protected或private的。
4、常量
接口中只能定義常量,且常量必須是public static final的,抽象類(lèi)中可以定義常量,常量的訪(fǎng)問(wèn)權限可以是public、pro┐(′?`)┌tected或private的。
1、為什么要使用接口和抽象類(lèi)?
答:使用接口和抽象類(lèi)可以提高代碼的復用性和可擴展性,接口可以將一組行為規范封裝起來(lái),讓其他類(lèi)通過(guò)實(shí)現接口來(lái)繼承這些行為規范;而抽象類(lèi)則可以將一些共有的特征和行為封裝起來(lái),讓其他類(lèi)通過(guò)繼承抽象類(lèi)來(lái)實(shí)現這些特征和行為,這??樣可以讓代碼更加模塊化,便于維護和擴展。
2、如何讓一個(gè)類(lèi)同時(shí)實(shí)現多個(gè)接口?
答:一個(gè)類(lèi)可以實(shí)現多個(gè)接口,只需在聲明時(shí)使用逗號分(fen)隔的方式列出所有的(′?ω?`)接口即可,class MyClass implements Interface1, Interface2ヽ(′ー`)ノ, Interface3 { … }
3、如何讓一┐(′д`)┌個(gè)類(lèi)繼??承多個(gè)抽象類(lèi)?
答:一個(gè)類(lèi)只能繼承一個(gè)抽象類(lèi),但(′?_?`)可以通過(guò)多重繼承的方式實(shí)現類(lèi)似的功能,class MyClass extends AbstractClass1, Abst(???)ractClass2 { … }