最近在面試過程中,遇到許多抽象類和接口的面試題,所以今天特意研究了下,然后寫出來分享給大家,希望對面試的朋友有幫助,如果覺得寫的可以點個贊吧!
1:抽象類可以通過子類間接實例化,接口不能實例化,所以接口不占用堆空間,抽象類占用堆空間。
2:抽象類可以擁有私有屬性、方法,接口不能擁有。
3:抽象類方法不能使用default關鍵字 修飾,接口方法可以。
3:抽象類只能被extends不能被implements,接口可以被implements和extends
5:接口沒有構造方法,抽象方法有。接口調用newInstance()拋出java.lang.NoSuchMethodException: Test2.<init>(),抽象類拋出java.lang.InstantiationException
7:接口所有變量都是public static final 不可變, 抽象類可以使用任意權限修飾符修飾變量。
8:抽象類不能多extends,接口可以多extends
9:抽象類抽象方法可以被public, protected修飾,接口抽象類只能被public 修飾
10:private 可以修飾內部類,private 不能修飾內部接口
11:接口支持lambda表達式@FunctionInterface,抽象類不支持
總結:接口優於抽象類,在編寫代碼代碼的時候優先考慮使用接口。