Java基礎系列 - 接口(功能,用途和優勢)


package com.test1;

/**
 * 接口的使用
 */
public class test1 {

    public static void main(String[] args) {
        //創建Compute
        Compute compute = new Compute();
        //創建Camera
        Camera camera = new Camera();
        //創建Phone
        Phone phone = new Phone();
        //調用
        compute.useUsb(camera);
        compute.useUsb(phone);

        /* 顯示
            我是相機,開始工作了
            我是相機,停止工作了
            我是手機,開始工作了
            我是手機,停止工作了
        * */
    }
}

/**
 * 定義一個USB接口
 */
interface Usb {
    //接口中聲明了兩個方法

    //開始工作
    public void start();

    //停止工作
    public void stop();
}

/**
 * 定義一個電腦類,使用Usb接口
 */
class Compute {
    public void useUsb(Usb usb) {
        usb.start();
        usb.stop();
    }
}

/**
 * 定義一個相機類,實現Usb接口
 * 注意:一個類實現某個接口,須實現這個接口里的所有方法
 */
class Camera implements Usb {

    @Override
    public void start() {
        System.out.println("我是相機,開始工作了");
    }

    @Override
    public void stop() {
        System.out.println("我是相機,停止工作了");
    }
}

/**
 * 定義一個收集類
 */
class Phone implements Usb {

    @Override
    public void start() {
        System.out.println("我是手機,開始工作了");
    }

    @Override
    public void stop() {
        System.out.println("我是手機,停止工作了");
    }
}

/*
總結了4點關於JAVA中接口存在的意義:

1、重要性:在Java語言中, abstract class 和interface 是支持抽象類定義的兩種機制。正是由於這兩種機制的存在,才賦予了Java強大的 面向對象能力。
2、簡單、規范性:如果一個項目比較龐大,那么就需要一個能理清所有業務的架構師來定義一些主要的接口,這些接口不僅告訴開發人員你需要實現那些業務,而且也將命名規范限制住了(防止一些開發人員隨便命名導致別的程序員無法看明白)。
3、維護、拓展性:比如你要做一個畫板程序,其中里面有一個面板類,主要負責繪畫功能,然后你就這樣定義了這個類。可是在不久將來,你突然發現這個類滿足不了你了,然后你又要重新設計這個類,更糟糕是你可能要放棄這個類,那么其他地方可能有引用他,這樣修改起來很麻煩。如果你一開始定義一個接口,把繪制功能放在接口里,然后定義類時實現這個接口,然后你只要用這個接口去引用實現它的類就行了,以后要換的話只不過是引用另一個類而已,這樣就達到維護、拓展的方便性。
4、安全、嚴密性:接口是實現軟件松耦合的重要手段,它描敘了系統對外的所有服務,而不涉及任何具體的實現細節。這樣就比較安全、嚴密一些(一般軟件服務商考慮的比較多)。

那么什么是接口呢?
接口是一種能力
1:接口的命名規則與類型不同。如果修飾符是public。則該接口在整個項目中可見 ,如果省略修飾符 則該接口只能在該包可見
2:接口中可以定義常量,不能定義變量,接口中的屬性都會自動用public static final修飾,即接口中的屬性都是全局靜態常量,接口中的常量必須在定義時指定初始值
3:接口中所有的方法抽象方法。接口中的方法都會自動用public abstract修飾。即接口中只有全局抽象方法,
4:和抽象類一樣,接口不能被實例化,接口中不能有狗構造方法
5:接口之間可以通過extends 實現繼承關系,一個接口可以繼承多個接口。但接口不能繼承類
6:接口的實現類必須實現接口的全部方法,否則必須定義為抽象類
7:一個類只能有一個直接父類,但可以通過implements實現多個接口,當雷在繼承父類的同時有實現了多個接口時,extends關鍵字必須位於implements關鍵字之前

接口的注意事項:
01.接口不能實例化,因為接口是比抽象類抽象程度更高的類型
02一個類如果實現了某個接口,必須重寫該接口中的所有方法
03.接口不能有構造,但是抽象類可以有
04.接口中所有方法都公有的抽象方法
05.接口中的所有字段必須都是公有的靜態常量
06.接口本身也是一種數據類型
07.接口只是為實現它的類定義了規范,保證實現類方法簽名和接口中對應方法一致。
08.通過接口可以實現多繼承
09.一個借口中最好只定義一個方法,防止接口污染

java中接口的特點:
1. 接口中的方法,永遠都被public來修飾
2. 接口中沒有構造方法,也不能實例化接口對象
3. 接口中只有方法的聲明,沒有方法體
4. 接口中只有常量,如果定義變量,在編譯的時候都會默認加上“public static final”
5. 接口中定義的方法都需要實現類來實現,如果實現類不能實現接口中的所有方法,則實現類需要定義為抽象類
6. 靜態方法不能被子類重寫(覆蓋),因此接口中不定聲明靜態方法
7. 使用接口可以實現多繼承
*/

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM