1.什么是抽象類
特點(diǎn)整理:
抽象類,不能被實(shí)例化,非抽象的類的子類,可以實(shí)例化;
抽象類中不能含有抽象方法,但是如果是抽象方法,就一定是抽象類;
抽象類中方法只是申明,但無具體方法體內(nèi)容;
抽象類中方法必須使用abstract進(jìn)行
抽象方法必須為public與protected修飾,不能使用private(如果方法不能被繼承,子類方法將無法得到實(shí)現(xiàn))
如果抽象類被子類繼承,則子類需要實(shí)現(xiàn)抽象類的抽象方法,如果子類沒有實(shí)現(xiàn)父類的抽象方法,在需要將子類也定義為抽象方法。
抽象類就是為了繼承而存在的,如果不繼承抽象類方法無法實(shí)現(xiàn)與使用。
2.什么接口
接口類中的變量會(huì)被隱形地指定為public static final變量(并且只能是public static final變量,用private修飾會(huì)報(bào)編譯錯(cuò)誤)
使用interface 的作為修改
接口類中方法會(huì)被隱形地指定為public abstract方法且只能是public abstract方法(用其他關(guān)鍵字,比如private、protected、static、 final等修飾會(huì)報(bào)編譯錯(cuò)誤)
接口中所有的方法不能有具體的實(shí)現(xiàn)(接口中的方法必須都是抽象方法)
一個(gè)類可以繼承多個(gè)接口,解決類繼承1對1的操作
3.語法不同點(diǎn)
1.語法層面上的區(qū)別
1)抽象類可以提供成員方法的實(shí)現(xiàn)細(xì)節(jié),而接口中只能存在public abstract 方法;
2)抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是public static final類型的;
3)接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法,而抽象類可以有靜態(tài)代碼塊和靜態(tài)方法;
4)一個(gè)類只能繼承一個(gè)抽象類,而一個(gè)類卻可以實(shí)現(xiàn)多個(gè)接口。
以上來自https://www.cnblogs.com/dolphin0520/p/3811437.html