JavaSE——面向對象:接口

什麼是接口:java

  • 硬件接口:指的是兩個硬件設備之間的鏈接方式。硬件接口既包括物理上的接口,還包括邏輯上上的數據傳輸協議。
  • 軟件接口:程序代碼,特殊的類。表示一種規範,是具備N個方法的特徵集合。

    在封裝時,顯示器封裝了不少電子元件,最終向外暴露數據交互的孔——>>接口,目的在於實現設備和設備之間的通訊。編程

   

    

     在Java中,接口表示一種規範/約束/要求實現者必須遵循該規範。用來約束使用者該怎麼作。ui

 

Java中的接口spa

    專家說:多個抽象類的抽象就是接口。code

    說人話:在Java中最小的程序單元就是類,接口實際上是一個特殊的類。繼承

Java中的接口表示規範,用於定義一組抽象方法,表示某一類事務必須具有的功能,要求實現類必須來實現該接口並提供方法實現。接口

//演示接口
interface IConnect{
	String PI= "aaa";	//接口中的成員變量
	void doWork();		//接口中的方法
	interface IWatch{	//		接口中的類(接口)
		
	}
	
}

public class InterfaceTest {

	public static void main(String[] args) {
		
		System.out.println("AA");
	}

}

接口的定義和繼承事務

    類和類之間是繼承關係:用extends來表示。class

    接口和接口之間只能是繼承關係:用extends來表示。變量

    接口和實現類之間只能是實現關係:用implements來表示。

    

接口的實現

程序示例

interface PaXing{

	void doWork();		//接口中的方法
	
}

interface ShuiXing{

	void doSwim();		//接口中的方法
	
}

interface LiangQi extends PaXing,ShuiXing{  //接口的繼承

	void doSwim();		//接口中的方法
	
}

class YYY implements LiangQi{	//類實現子類接口
	public void doWork(){
		System.out.println("This is YYY dowork Cat!");
	}
	public void doSwim(){
		System.out.println("This is YYY dowork Cat!");
	}
}

 class SSS implements PaXing,ShuiXing{  //類實現多接口
	public void doWork(){
		System.out.println("This is SSS dowork Cat!");
	}
	public void doSwim() {
		System.out.println("This is SSS doswim Cat!");
	}
}
 
 class Fish implements ShuiXing{	//類實現單接口
	 public void doSwim(){
		 System.out.println("This is Fish doswim fish!");
	 }
 }

public class InterfaceTest {

	public static void main(String[] args) {
		
		SSS a=new SSS();	
		a.doSwim();
		a.doWork();
		System.out.println("****************");
		
		PaXing d= new SSS();	
		d.doWork();   //沒有doSwim()方法
		
		System.out.println("****************");
		YYY b=new YYY();	//鄙視寫法
		b.doSwim();
		b.doWork();
		System.out.println("****************");
		
		LiangQi c= new YYY();	//高級多態寫法,面向接口編程。
		c.doSwim();
		c.doWork();
		System.out.println("****************");
		
		ShuiXing fish1= new Fish();
		fish1.doSwim();
	
	}

}

運行結果

This is SSS doswim Cat!
This is SSS dowork Cat!
****************
This is SSS dowork Cat!
****************
This is YYY dowork Cat!
This is YYY dowork Cat!
****************
This is YYY dowork Cat!
This is YYY dowork Cat!
****************
This is Fish doswim fish!

接口和抽象類的區別

    相同點

  • 都位於繼承的頂端,用於被其餘實現或繼承。
  • 都不能實例化
  • 均可以定義抽象方法,其子類/實現類都必須覆寫這些抽象方法。

    不一樣點

  • 接口沒有構造方法,抽象類有。
  • 抽象類可包含抽象方法和普通方法,接口只能包含抽象方法(Java8以前)。
  • 類是單繼承(多是繼承抽象類),卻能夠實現多個接口。接口是多繼承。(接口彌補了java的單繼承)
  • 成員變量:接口默認是public static final,抽象類是默認包權限。
  • 方法:接口裏默認是public abstract ,抽象類默認是默認包訪問權限。
  • 內部類:接口裏默認是public static,抽象類默認是默認包訪問權限。

    若是接口和實現類能夠完成相同的功能,儘可能使用接口,面向接口編程。

相關文章
相關標籤/搜索