一、接口的概念
官方解釋:(該瞭解的還是得了解)
- Java接口是一系列方法的聲明,是一些方法特徵的集合,一個接口只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行爲(功能)。
我的解釋:
- 接口是一種“協議”、是一份“契約”,是一種規範。
打個比方:我使用你的產品,那就必須遵循你的規定,不然就亂套了
二、接口的組成
接口也是一個類、但是它是一個抽象類
- 方法只能是抽象方法(public abstract),省略也是
- 變量只能是全局常量(public static final),省略也是
- 沒有構造器
三、接口的定義
直接上代碼
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();
}
}
結果截圖:
分析:
- 上面的代碼可以說明接口的應用。
- 比方說生產一輛汽車,我們可以直接組裝輪子、組裝發動機等,而這些輪子和發動機都不是我生產的,而是通過進口的,我使用它,是不是要遵循它的“契約”呢。
- 再打個比方:比如說德國生產的輪子最大時速只能爲300km/h,你接過來用不可能就變成500km/h了吧
- 上面的匿名類也是一個類,它只不過是直接寫在裏面罷了,和普通的接口實現類沒有什麼大不同,有興趣的可以去學習一下
六、分享交流
最後有興趣一起交流的,可以關注我的公衆號:這裏你能夠學到很實用的技巧,不是常用的我不說,公衆號回覆提取碼即可獲取以下學習資料啦啦啦啦,喜歡就拿去吧!!
(鏈接時常會失效,若出現此類情況,可以加我微信:17722328325(加時請備註:學習資料))
-
Java web從入門到精通電子書
-
Python機器學習電子書
-
Python400集(北京尚學堂)
-
JavaScript項目案例、經典面試題
-
Java300集(入門、精通)
-
Java後端培訓機構錄集(同事培訓內部提供)