公司:#小米 #滴滴
崗位:#自動(dòng)化測(cè)試工程師
關(guān)鍵字:#adb #Android #移動(dòng)端app #Appium #java
相同點(diǎn):
1、都不能被實(shí)例化
2、接口的實(shí)現(xiàn)類(lèi)或者抽象類(lèi)的子類(lèi)都必須實(shí)現(xiàn)了接口或抽象類(lèi)中的方法后才可以被實(shí)例化
不同點(diǎn):
1、抽象類(lèi)可以包含非抽象的方法,而接口中的方法必須是抽象的。
2、繼承抽象類(lèi)在Java語(yǔ)言體系中體現(xiàn)一種繼承關(guān)系,在合理的繼承關(guān)系中,父類(lèi)和派生類(lèi)比如按存在is-a關(guān)系。而實(shí)現(xiàn)接口則體現(xiàn)一種has-a關(guān)系,實(shí)現(xiàn)者僅僅是實(shí)現(xiàn)了interface定義的契約而已。
3、抽象類(lèi)中可以有成員變量,而接口中不能有成員變量。
4、抽象類(lèi)和接口中都可以包含靜態(tài)成員變量,抽象類(lèi)中的靜態(tài)成員變量的屬性可以是任意的,而接口中的靜態(tài)成員變量默認(rèn)且必須是public static final。
5、接口中的抽象方法默認(rèn)且必須都是public的,而抽象類(lèi)中的抽象方法可以是public、protect或默認(rèn)。
6、抽象類(lèi)中可以有構(gòu)造方法,但是不能實(shí)例化。
7、抽象類(lèi)中可以有靜態(tài)方法(非抽象的),而接口中不能有靜態(tài)方法。