接口与抽象类的比较
接口的所有方法都是抽象方法,成員變量都是static final 類型的。
只要包含的一個(gè)方法被聲明為抽象的類,那么這個(gè)類必須被聲明為抽象類,抽象類不能被實(shí)例化。抽象類的子類除非也是也是抽象類,否則必須實(shí)現(xiàn)父類中所有的抽象方法。抽象類可以對(duì)抽象方法給出方法體的具體實(shí)現(xiàn),但是接口不能。
抽象類中的抽象方法不能使用 static \ private \ native \ synchronized等修飾
接口和抽象類的相同點(diǎn):
1)都不能被實(shí)例化。
2)接口的實(shí)現(xiàn)類或抽象類的子類都只有實(shí)現(xiàn)了接口或者抽象類中的c抽象方法后才能被實(shí)例化。
接口和抽象類的不同點(diǎn):
1)接口方法只有定義,不能給出方法的具體實(shí)現(xiàn)。抽象類可以有抽象方法,也可以有一般方法,一般方法可以有方法實(shí)現(xiàn)體。
2)接口需要實(shí)現(xiàn)(implements),抽象類需要繼承(extends),一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但是只能繼承一個(gè)抽象類。
3)接口中成員變量默認(rèn)都是 public static final的類型,方法都是public abstract;抽象類可以有自己的數(shù)據(jù)成員變量,抽象方法和非抽象方法。成員變量默認(rèn)都是default的類型。
?
?
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: 枚举类能继承吗?能被继承吗?
- 下一篇: 多线程:一个线程在运行时发生异常会怎么样