Java之接口(Interface)用法及說明
Java 接口(Interface)
接口的本質(zhì): 接口是一種比抽象類更“純粹”的抽象類型。它就像是一份 “通用契約” 或 “行為標準” ,只規(guī)定“能做什么”,而不關心“具體怎么做”。
接口的核心作用
- 約束與規(guī)范:定義一套標準,強制要求實現(xiàn)類必須遵守。
- 擴展能力:彌補了 Java 類“單繼承”的局限,讓一個類可以實現(xiàn)多個接口,從而具備多種能力。
- 解耦:將“使用者”和“實現(xiàn)者”分離。面向接口編程,依賴的是抽象的契約,而不是具體的實現(xiàn)類,這大大提高了代碼的靈活性和可維護性。
接口的定義與成員規(guī)則
- 抽象方法:接口中的普通方法默認都是
public abstract修飾的(即使省略不寫,編譯器也會自動加上)。(注:從 Java 8 開始,接口中允許定義帶有方法體的default和static方法。) - 全局常量:接口中定義的屬性(變量)默認都是
public static final修飾的,即全局靜態(tài)常量。必須在聲明時賦值,且不可修改。 - 無構造方法:接口不能被實例化(不能
new接口),因此接口中沒有構造方法。
接口的實現(xiàn)(Implements)
- 多實現(xiàn)機制:一個類可以通過
implements關鍵字來實現(xiàn)一個或多個接口(多個接口用逗號隔開)。 - 強制重寫:如果一個普通類實現(xiàn)了接口,就必須重寫接口中所有的抽象方法。如果該類沒有重寫所有抽象方法,則這個類必須被聲明為抽象類。
- 訪問權限:接口中的方法默認是
public的,實現(xiàn)類在重寫時,訪問權限不能低于接口的權限,所以必須顯式聲明為public。
接口與繼承的關系
- 類與類:只能是單繼承(
extends)。 - 類與接口:可以多實現(xiàn)(
implements)。 - 接口與接口:接口之間支持多繼承(一個接口可以
extends多個父接口)。
代碼示例:多實現(xiàn)與不可實例化
接口就像一份“行為說明書”,類實現(xiàn)了接口就必須照著做。同時,接口本身是抽象的,無法直接創(chuàng)建對象。
// 定義兩個接口:代表兩種不同的能力
interface Flyable {
void fly();
}
interface Swimmable {
void swim();
}
// 一個類可以實現(xiàn)多個接口(多實現(xiàn)),同時具備飛行和游泳的能力
class Duck implements Flyable, Swimmable {
@Override
public void fly() {
System.out.println("鴨子在天上飛");
}
@Override
public void swim() {
System.out.println("鴨子在水里游");
}
}
public class Test {
public static void main(String[] args) {
// 接口不能被實例化!以下代碼會報錯:
// Flyable f = new Flyable(); 編譯錯誤
// 正確的做法是:創(chuàng)建實現(xiàn)類的對象
Duck duck = new Duck();
duck.fly();
duck.swim();
}
}
生活案例:USB 接口
接口在現(xiàn)實生活中的完美體現(xiàn)就是電腦的 USB 接口。
電腦主板(系統(tǒng))定義好了 USB 接口的規(guī)范(能傳輸數(shù)據(jù)、能供電),它不需要知道具體插上來的是什么設備。
- 鼠標實現(xiàn)了 USB 接口,插上就能控制光標。
- 鍵盤實現(xiàn)了 USB 接口,插上就能輸入文字。
- U盤實現(xiàn)了 USB 接口,插上就能讀寫文件。
不管是鼠標、鍵盤還是U盤,只要它們符合 USB 接口的規(guī)范(實現(xiàn)了接口),電腦就能識別并使用它們。這就是接口“約束”與“多態(tài)”的完美體現(xiàn),也極大地降低了設備與電腦之間的耦合度。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java實戰(zhàn)之用springboot+netty實現(xiàn)簡單的一對一聊天
這篇文章主要介紹了Java實戰(zhàn)之用springboot+netty實現(xiàn)簡單的一對一聊天,文中有非常詳細的代碼示例,對正在學習Java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
Springboot集成MongoDB無認證與開啟認證的配置方式
本文主要介紹了Springboot集成MongoDB無認證與開啟認證的配置方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-03-03
Java實現(xiàn)的簡單數(shù)字處理類及用法示例
這篇文章主要介紹了Java實現(xiàn)的簡單數(shù)字處理類及用法,涉及java數(shù)字運算相關操作技巧,需要的朋友可以參考下2018-01-01
利用Java實現(xiàn)讀取WPS?Excel中嵌入的圖片
許多數(shù)據(jù)文件中可能包含嵌入式圖片,這些圖片對于數(shù)據(jù)分析和可視化非常重要,下面我們就來看看如何使用Java讀取WPS?Excel中嵌入的圖片吧2024-11-11
解決創(chuàng)建springboot后啟動報錯:Failed?to?bind?properties?under‘spri
在Spring?Boot項目中,application.properties和application.yml是用于配置參數(shù)的兩種文件格式,properties格式簡潔但不支持層次結(jié)構,而yml格式支持層次性,可讀性更好,在yml文件中,要注意細節(jié),比如冒號后面需要空格2024-10-10
idea中maven使用tomcat7插件運行run報錯Could not start T
這篇文章主要介紹了idea中maven使用tomcat7插件運行run報錯Could not start Tomcat問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09

