1、接口及做用函數
接口是一個很是重要的概念,理解這個,先舉一個實現生活中的實例。
如今,電腦主板,有不少插槽,可用來插CPU、內存等。當CPU等元件須要更新換代升級時,只要將CPU單獨更換就能夠了,而不須要更換主板。其實,主板上的這些暴露在外的插槽,就能夠理解爲接口。spa
接口就是對外暴露的規則,只要符合規則的CPU、內存,不論品牌、型號、規格,均可以安插使用。code
接口是程序的功能擴展。有了插槽,也就提升了主板的功能擴展性,好比內存不夠用了,咱們就能夠換成內容最大的內存條,或再加新的內存條。對象
接口下降了耦合性。有了規則,主板和CPU等元件的就分開了,能夠分開生了。只要符合規則,元件就能夠插入插槽進行使用。這樣,主板廠商和CUP廠商之間的聯繫就少了。blog
2、接口的定義格式繼承
class 用於定義類。
interface用於定義接口。接口
接口中常見的定義:常量、抽象方法內存
常量:public static finalio
方法:public abstract class
接口中的成員都是public,並且這些修飾都是能夠省略的,只要是interface,系統就會自動補足。
3、接口的特色
接口不能直接建立對象
類與類之間是「繼承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(); }