由 abstract 修飾的類稱為抽象類,由 interface 修飾的類稱為接口。
語法區(qū)別:
抽象類中可以有構(gòu)造方法,接口中不允許有構(gòu)造方法。
抽象類中可以有普通的成員變量和成員方法。抽象類中可以存在PRivate的成員變量和成員方法,但其抽象方法不能使用private修飾。接口中只有抽象方法和靜態(tài)常量: 即接口中的方法只能是 public abstract修飾的抽象方法,成員變量只能是 public static final修飾的常量。
抽象類中可以有靜態(tài)變量和靜態(tài)方法,接口中沒有靜態(tài)方法,靜態(tài)變量也只能是常量。
一個類可以繼承一個抽象類,但可以實現(xiàn)多個接口。
應(yīng)用設(shè)計方面:
接口更多的是在系統(tǒng)架構(gòu)設(shè)計方法發(fā)揮作用,主要用于定義模塊之間的通信契約【即提供一種傳參的規(guī)范】。而抽象類在代碼實現(xiàn)方面發(fā)揮作用,可以實現(xiàn)代碼的重用。
Demo 代碼案例:
abstract class TestAbs extends TestSub{ //抽象類可以有靜態(tài)的成員方法 public static void main(){} //抽象類中可以有構(gòu)造方法 public TestAbs(){} //抽象類中可以有成員變量 private int a=1; //抽象類中可以有靜態(tài)成員變量 private static int b=1; //抽象類中,除private外其余的修飾符都可以修飾抽象方法 protected abstract void a(); private void b(){ TestAbs.main(); }}interface D{ /** * 接口中不能有構(gòu)造方法 * 默認(rèn)的成員變量是常量,默認(rèn)為 public static final * 接口中的方法默認(rèn)是:public abstract 修飾 * 接口中不能存在普通方法 */ int a=1;}新聞熱點
疑難解答