java接口和抽象類的簡單理解

        接口:ide

       (1)接口內定義的變量都是public static final類型的,不管是否顯示限定這些修飾符,且必需要被顯式初始化,不然報錯:函數

public interface Interface1 { /** * VARIABLE1顯式添加public static final修飾符 * VARIABLE2隱式含有public static final修飾符 */
    public static final String VARIABLE1="AAA"; String VARIABLE2="BBB"; /** * VARIABLE3未顯式初始化,代碼變異報錯: * The blank final field VARIABLE3 may not have been initialized */ String VARIABLE3; }

        (2)接口內定義的方法都是抽象方法,即不包含任何方法實現spa

            a.若是實現接口的類是普通類(非抽象類),則要實現該接口的全部方法,不然編譯報錯;code

            b.若是實現接口的類是抽象類,則能夠只實現該接口的部分方法,不然拋出異常;blog

public interface Interface2 { /** * method1方法定義顯式添加public abstract修飾符 * method2方法隱式含有public abstract修飾符,兩個方法都是抽象方法 */
    public abstract String method1(); String method2(); }
/** * 普通類Class1實現Interface2接口,必須實現全部接口方法 * */
public class Class1 implements Interface2 { @Override public String method1() { // TODO Auto-generated method stub
        return null; } @Override public String method2() { // TODO Auto-generated method stub
        return null; } }
/** * 抽象類Class2實現Interface2接口,能夠只實現方法method1 */
public abstract class Class2 implements Interface2 { @Override public String method1() { // TODO Auto-generated method stub
        return null; } }

    抽象類:繼承

       (1)抽象類也是類,跟通常類同樣能夠有普通的變量、帶實現的方法,能夠有構造函數,但不能被實例化,只能用來繼承接口

         普通方法必須帶方法體,抽象方法不能帶方法體;開發

public abstract class AbstractClass1 { String variable1;//普通變量
    public static final String VARIABLE2="AAA";//定義靜態常量
    public void method1(){  }//普通方法,必須有方法體
    abstract void method2();//抽象方法,不能有方法體
 AbstractClass1(){//能夠定義構造函數,但抽象類不能實例化,只能被繼承
        System.out.println("此爲構造函數"); } }

       接口和抽象類還有一個最大的不一樣,一個類能夠實現多個接口,但只能繼承一個類it

       在實際應用中,接口是最爲經常使用的,若是多個接口的實現有公共的部分,則能夠考慮將這部份內容提取到抽象類中,而後繼承該抽象類。也就是說,抽象類提供公共方法的實現,能夠快速開發且統一管理,又容許你的類徹底實現本身的全部方法,不會出現緊耦合的問題。編譯

相關文章
相關標籤/搜索