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