1、什麼是接口java
接口就是一個規範,相似於硬件上面的接口,在電腦主板上的PCI插槽的規範就相似於Java接口,只要是遵循PCI接口的卡,不過是什麼牌子的均可以插入到PCI插槽中。因此接口就是一個規範。接口就是某個事物對外提供的一些功能的說明。咱們還能夠利用接口實現多態功能,同時接口也彌補了Java單一繼承的弱點,也就是類能夠實現多個接口。ide
咱們使用interface關鍵字定義接口,通常使用接口聲明方法或常量,接口中的方法只能是聲明,不能是具體的實現,這一點和抽象類是不同的。接口是更高級別的抽象。接口的定義格式是函數
public interface 接口名稱{spa
//能夠定義常量設計
//方法只有方法聲明,並且是公共的。code
public void 方法名稱();對象
...blog
}繼承
類要實現接口,只須要使用implements關鍵字,實現類必需要實現接口中的全部的方法接口
public class 實現類名 implements 接口{
//實現接口的方法
}
2、接口的應用
定義一個接口很是簡單,固然其實要設計一個好的接口並非很簡單,你必需要想好這個接口有什麼常量和方法。可是技術卻很是簡單,示例代碼以下:
// 定義方法的接口 public interface Myinterface { // 定義程序使用的常量的接口,接口中只能有常量。 public static final double price = 1450.00; public static final int counter = 5; //接口中全部的方法都沒有方法體。 public void add(int x, int y); public void volume(int x,int y, int z); }
實現接口也沒有什麼難度,代碼以下:
//實現 接口 public class MyImple implements Myinterface { @Override public void add(int x, int y) { } @Override public void volume(int x, int y, int z) { } }
一個類是能夠實現多個接口,由於java是單繼承的,這點接口能夠彌補。咱們能夠再定義一個接口
public interface MyInterface2 { public void countpp(); }
修改上面的實現類,要實現多個接口,可使用逗號隔開,固然全部的接口的方法都要實現。
//實現 接口1,接口2 public class MyImple implements Myinterface ,MyInterface2{ @Override public void add(int x, int y) { } @Override public void volume(int x, int y, int z) { } @Override public void countpp() { } }
3、接口和抽象類有什麼區別
abstract class和interface是Java語言中對於抽象類定義進行支持的兩種機制,abstract class和interface之間在對於抽象類定義的支持方面具備很大的類似性,甚至能夠相互替換,所以不少開發者在進行抽象類定義時對於abstract class和interface的選擇顯得比較隨意。其實,二者之間仍是有很大的區別的
一、抽象類裏面能夠有非抽象方法。但接口裏只能有抽象方法,接口體現的是一種規範,抽象類體現的是模板式設計。
二、接口(interface)是抽像類的變體。在接口中,全部方法都是抽像的。多繼承性可經過實現這樣的接口而得到。接口中的全部方法都是抽像的,沒有一個有程序體。接口只能夠定義static final成員變量。接口的實現與子類類似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)全部這種接口的方法。而後,它能夠在實現了該接口的類的任何對像上調用接口的方法。因爲有抽像類,它容許使用接口名做爲引用變量的類型。一般的動態聯編將生效。引用能夠轉換到接口類型或從接口類型轉換,instanceof 運算符能夠用來決定某對象的類是否實現了接口
三、接口裏不能夠定義靜態方法,抽象類裏能夠。接口裏的變量所有爲靜態常量,抽象類裏能夠有普通變量。
4.接口裏不能夠有構造函數和初始化塊,抽象類裏能夠有。
5.一個類能夠實現多個接口,但只能繼承一個抽象類。