詳解java interface 接口

一、接口的含義

java中接口有兩種含義:
(1)類的所有能被其他程序訪問的方法構成類的接口
(2)interface定義的接口類型

二、接口的聲明

接口類型和抽象類類似,都不能被實例化,接口內的方法默認爲抽象方法,沒有方法體

public interface xxx{
	public void work();//默認爲抽象方法
} 

用implements來訪問接口,類中需要爲接口中所有的抽象方法編寫方法體,否則該類是抽象類

public class x implements xxx{
	public void work(){
		//...
	}
}

三、接口要點

1、接口中的變量

接口中所有變量都是public static final的,所有變量都必須被顯式初始化

public interface xxx{
	int a1;//編譯出錯,必須顯式初始化
	protected a2=0;//編譯出錯,a2必須是public static final類型
	int a3=1;//編譯成功
}

2、接口中的默認方法和靜態方法

允許在接口中用default定義默認方法,static定義靜態方法,有方法體

public interface xxx{
	default void method1(){//聲明默認方法
		System.out.println("default method1");
	}
	static void method2(){//聲明靜態方法
		System.out.println("static method2");
	}
	void method3();//聲明抽象方法
}

外部實例化調用默認方法和抽象方法,直接通過接口調用靜態方法

public class x implements xxx{
	public void method3(){//編寫xxx中method3抽象方法的方法體
		//...
	}
	public static void main(String[] args){
		x a=new x();
		x.method2();//直接調用靜態方法
		a.method1();//通過實例調用默認方法
		a.method3();//通過實例調用抽象方法
	}
}

3、接口中的方法

接口中的方法默認都是public類型的,並且必須是public類型的

4、接口的繼承

接口也可以繼承別的接口

interface base{
	void method1();
} 
interface sub extends base{//sub接口將繼承base中的method1方法
	void method2();
}

5、多接口

一個類可以實現多個接口,但是隻能繼承一個抽象類

public class x implements a,b,c{
	//...	
}

6、引用變量

允許將一個引用變量聲明爲接口類型,而實際上引用實現接口的類的實例

7、類的實現

類在實現接口的抽象方法時,必須用顯式地使用public修飾符,因爲接口的抽象方法的訪問限制默認爲public,不顯式將被認爲是縮小了接口中定義的方法的訪問權限。

三、instanceof

判斷一個引用類型所引用的對象是否是一個類的實例,這裏的類可以是父類也可以是接口

引用變量 instanceof 類名或者接口名

類名或接口名是以下三者時表達式返回true
(1)引用變量的類
(2)引用變量類的直接或間接父類
(3)引用變量類實現的接口

四、‘==’和equals()方法

a==b;
a.equals(b);

只有當a和b所指向的是同一個實例時這兩個表達式才返回true

JDK中有些類覆蓋了object的equals方法,如String,會判斷內容相不相同而不是所指代的實例相不相同

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章