java 抽象類和接口區(qū)別 接口和抽象類的主要區(qū)別?
接口和抽象類的主要區(qū)別?Java提供和支持創(chuàng)建抽象類和接口。它們的實現(xiàn)有共同點,不同點在于:接口中所有的方法隱含的都是抽象的。抽象類則可以同時包含抽象和非抽象的方法。類可以實現(xiàn)很多個接口,但是只能繼承
接口和抽象類的主要區(qū)別?
Java提供和支持創(chuàng)建抽象類和接口。
它們的實現(xiàn)有共同點,不同點在于:接口中所有的方法隱含的都是抽象的。抽象類則可以同時包含抽象和非抽象的方法。類可以實現(xiàn)很多個接口,但是只能繼承一個抽象類類如果要實現(xiàn)一個接口,它必須要實現(xiàn)接口聲明的所有方法。但是,類可以不實現(xiàn)抽象類聲明的所有方法,當(dāng)然,在這種情況下,類也必須得聲明成是抽象的。抽象類可以在不提供接口方法實現(xiàn)的情況下實現(xiàn)接口。Java接口中聲明的變量默認(rèn)都是final的。抽象類可以包含非final的變量。Java接口中的成員函數(shù)默認(rèn)是public的。抽象類的成員函數(shù)可以是private,protected或者是public。接口是絕對抽象的,不可以被實例化。抽象類也不可以被實例化,但是,如果它包含main方法的話是可以被調(diào)用的。也可以參考JDK8中抽象類和接口的區(qū)別
抽象接口和接口的區(qū)別?
1、抽象類和接口都不能直接實例化。如果要實例化,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對象,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對象。
2、抽象類要被子類繼承,接口要被類實現(xiàn)。
3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實現(xiàn)
4、接口里定義的變量只能是公共的靜態(tài)的常量,抽象類中的變量是普通變量。
5、抽象類里的抽象方法必須全部被子類所實現(xiàn),如果子類不能全部實現(xiàn)父類抽象方法,那么該子類只能是抽象類。
同樣,實現(xiàn)接口的時候,如不能全部實現(xiàn)接口方法,那么該類也只能為抽象類。
6、抽象方法只能申明,不能實現(xiàn)。
7、抽象類里可以沒有抽象方法
8、如果一個類里有抽象方法,那么這個類只能是抽象類
9、抽象方法要被實現(xiàn),所以不能是靜態(tài)的,也不能是私有的。
10、接口可以繼承接口,并且可多繼承接口,但類只能單一繼承。
11.接口可以通過匿名內(nèi)部類實例化。