java 接口詳解---(看這就夠了)

一、接口的概念

官方解釋:(該瞭解的還是得了解)

  • Java接口是一系列方法的聲明,是一些方法特徵的集合,一個接口只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行爲(功能)。

我的解釋:

  • 接口是一種“協議”、是一份“契約”,是一種規範。
    打個比方:我使用你的產品,那就必須遵循你的規定,不然就亂套了

二、接口的組成

接口也是一個類、但是它是一個抽象類

  1. 方法只能是抽象方法(public abstract),省略也是
  2. 變量只能是全局常量(public static final),省略也是
  3. 沒有構造器

三、接口的定義

直接上代碼

interface A{
	//變量省略修飾符號,也是public static final
	int FLAG = 1;
	
	//方法省略修飾符,也是public abstract
	void drive();
}

四、接口的使用

由於接口裏面存在抽象方法,所以接口對象不能直接使用關鍵字new進行實例化。接口的使用原則如下:
1. 接口必須要有子類,但此時一個子類可以使用implements關鍵字實現多個接口;
2. 接口的子類(如果不是抽象類),那麼必須要覆寫接口中的全部抽象方法;
3. 接口的對象可以利用子類對象的向上轉型進行實例化。
4. 或者直接用實現接口的匿名類對象來調用接口中的方法

敲黑板:3 .4點很重要,也很常用

五、代碼說話

光看是不行的,小夥伴一起來擼代碼吧

package Java_study;
/**
 * 接口學習
 * 1.接口與接口之間也是繼承關係
 * 2.接口中的變量只能是常量,爲public static final
 * 3.接口中的方法爲抽象方法,爲public abstract
 * @author 放牛娃學編程(微信公衆號)
 *
 */

//定義一個輪子接口(包含輪子大小、時速)
interface wheel{
	//變量省略修飾符號,也是public static final
	int SIZE =200;
	
	//方法省略修飾符,也是public abstract
	void speed();
}

//定義一個發動機接口(包含功率、壽命)
interface engine{
	//發動機壽命
	public static final int LifeTime = 20;
	
	//發動機功率
	public abstract void power();
}

//寶馬車類實現wheel、engine接口
class bM implements wheel,engine{

	@Override
	public void speed() {
		// TODO Auto-generated method stub
		System.out.println("我的時速可以達到240km/h");
		
	}

	@Override
	public void power() {
		// TODO Auto-generated method stub
		System.out.println("我的發動機功率最高可以達到10000w");
	}
	
}

public class Interface_study02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//接口的對象可以利用子類對象的向上轉型進行實例化
		wheel w = new bM();
		engine e = new bM();
		w.speed();
		e.power();
		
		System.out.println("------------------");
		
		//實現接口的匿名類對象
		wheel w2 = new wheel() {
			@Override
			public void speed() {
				// TODO Auto-generated method stub
				System.out.println("我的時速可以達到300km/h----匿名類");
	    	}
		};
		w2.speed();
	}
}

結果截圖:
在這裏插入圖片描述
分析:

  1. 上面的代碼可以說明接口的應用。
    • 比方說生產一輛汽車,我們可以直接組裝輪子、組裝發動機等,而這些輪子和發動機都不是我生產的,而是通過進口的,我使用它,是不是要遵循它的“契約”呢。
    • 再打個比方:比如說德國生產的輪子最大時速只能爲300km/h,你接過來用不可能就變成500km/h了吧
  2. 上面的匿名類也是一個類,它只不過是直接寫在裏面罷了,和普通的接口實現類沒有什麼大不同,有興趣的可以去學習一下
六、分享交流

最後有興趣一起交流的,可以關注我的公衆號:這裏你能夠學到很實用的技巧,不是常用的我不說,公衆號回覆提取碼即可獲取以下學習資料啦啦啦啦,喜歡就拿去吧!!

(鏈接時常會失效,若出現此類情況,可以加我微信:17722328325(加時請備註:學習資料))

  1. Java web從入門到精通電子書

  2. Python機器學習電子書

  3. Python400集(北京尚學堂)

  4. JavaScript項目案例、經典面試題

  5. Java300集(入門、精通)

  6. Java後端培訓機構錄集(同事培訓內部提供)

在這裏插入圖片描述

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