Interface接口


一、接口及作用

  接口是一個非常重要的概念,理解這個,先舉一個實現生活中的實例。
  現在,電腦主板,有很多插槽,可用來插CPU、內存等。當CPU等元件需要更新換代升級時,只要將CPU單獨更換就可以了,而不需要更換主板。其實,主板上的這些暴露在外的插槽,就可以理解為接口。


  接口就是對外暴露的規則,只要符合規則的CPU、內存,不論品牌、型號、規格,都可以安插使用。

  接口是程序的功能擴展。有了插槽,也就提高了主板的功能擴展性,比如內存不夠用了,我們就可以換成內容最大的內存條,或再加新的內存條。

  接口降低了耦合性。有了規則,主板和CPU等元件的就分開了,可以分開生了。只要符合規則,元件就可以插入插槽進行使用。這樣,主板廠商和CUP廠商之間的聯系就少了。

 

二、接口的定義格式

  class 用於定義類。
  interface用於定義接口。

  接口中常見的定義:常量、抽象方法

  常量:public static final

  方法:public abstract 

  接口中的成員都是public,而且這些修飾都是可以省略的,只要是interface,系統就會自動補足。

 

三、接口的特點

  接口不能直接創建對象

  類與類之間是“繼承extends”。(因為父類中有非抽象內容,可以直接拿過來用)

  類與接口之間是“實現implements”。(因為接口內的成員都是抽象的,子類要將父類中的成員全都實現后,才可使用)

  接口與接口之間是“繼承extends”。

  接口可以被類多實現,即一個類可以實現多個類。這是對JAVA不支持多繼承的一種轉換形式。

interface Inter {
    public static final int NUM = 3;

    public abstract void show();
}

class Test implements Inter // class是繼承(因為父類中有非抽象內容,可以被子類調用)
                            // interface是實現(因為子類要全都將接口中的內容實例化后才能使用)
{
    public void show() {
    }
}

public class InterfaceDemo {

    public static void main(String[] args) {
        Test t = new Test();
        System.out.println(t.NUM); // 對象可以調用成員
        System.out.println(Test.NUM); // 類可以調用成員。因為Test實現了Inter,相當於其中也有NUM
        System.out.println(Inter.NUM); // 接口可以調用成員

    }

}

 

多現實

interface Inter {                    //第一個接口
    public static final int NUM = 3;

    public abstract void show();    
}

interface InterA {                    //第二個接口
    public abstract void method();
}

class Demo {
    public void myFunction() {
    }

}

// 類可以繼承類同時實現多個接口,同時繼承類。
//因為接口中的方法沒有方法主休,所以可以多實現,由子類任意定義。
class Test extends Demo implements Inter, InterA 
{
    public void show(){}    //復寫接口內的所有方法

    public void method(){}    //復寫接口內的所有方法
}
interface Inter {                    //第一個接口
    public static final int NUM = 3;

    public abstract void show();    
}

interface InterA {                    //第二個接口
    public abstract void show();
}

class Test extends Demo implements Inter, InterA 
{
    public void show(){}  //兩個接口內的方法同名時,實現多接口時只要復寫一次即可
}

 

接口之間是繼承

interface A {                    //A有一個方法
    void methodA();
}

interface B extends A {            //B有兩個方法
    void methodB();
}

interface C extends B {            //C有三個方法
    void methodC();
}

class D implements C{            //接口A繼承B,B函數C,類D實現接口C,D中要復寫3個方法
    public void methodA(){}
    public void methodB(){}
    public void methodC(){}
}
interface A {                    //A有一個方法
    void methodA();
}

interface B  {                  //B有一個方法
    void methodB();
}

interface C extends A、B {      //C有繼承A、B
    void methodC();
}        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM