詳解java接口基礎(chǔ)知識(shí)附思維導(dǎo)圖
接口:
官方的含義是---->java接口是一系列方法的聲明,是一些方法特征的集合
疑問(wèn):
那為什么不用抽象類(lèi)呢?把他們共有的方法集合起來(lái)放在一個(gè)抽象類(lèi)里面,同樣可以調(diào)用哇,但是反過(guò)來(lái)想一想如果這些方法,不是同一個(gè)類(lèi),就比如飛這個(gè)方法,飛機(jī)有飛這個(gè)方法,蚊子有飛這個(gè)方法,如果讓他連同時(shí)繼承擁有飛這個(gè)抽象類(lèi)里面,是不符合單一職責(zé)原則的,所以我們可以提供一個(gè)飛的接口,飛機(jī),蚊子來(lái)實(shí)現(xiàn)這個(gè)接口,那么飛機(jī)和蚊子就擁有飛的能力啦,這是我對(duì)接口的理解
因?yàn)樽罱趯W(xué)習(xí)java 面向?qū)ο笾械慕涌?,就?huà)了思維導(dǎo)圖:

這是我對(duì)接口知識(shí)的基本總結(jié)
舉一個(gè)案例希望大家能理解接口!
現(xiàn)在有一個(gè)需求,有一個(gè)門(mén)door類(lèi),有一個(gè)防盜門(mén)AntiTheDoor類(lèi),有一個(gè)鐵門(mén)IronDoor類(lèi),因?yàn)榉辣I門(mén)和鐵門(mén)都有門(mén)的屬性,所以二者
繼承門(mén)door類(lèi)
他們都有一個(gè)功能,就是上鎖與開(kāi)鎖,還有一個(gè)防盜門(mén)獨(dú)有的功能,就是貓眼CatEye功能,貓眼功能是防盜門(mén)獨(dú)有的方法,所以應(yīng)當(dāng)把
貓眼看成一個(gè)接口,防盜門(mén)可以實(shí)現(xiàn)它,這樣我們用代碼怎么來(lái)詮釋呢(定義與實(shí)現(xiàn))
父類(lèi)door
public abstract class Door {
/**
* 開(kāi)門(mén)
*/
public abstract void open();
/**
* 關(guān)門(mén)
*/
public abstract void close();
}
接口:只寫(xiě)應(yīng)該具有的功能
public interface CatEye {
/**
* 在使用接口的所有類(lèi)中,需要實(shí)現(xiàn)接口中所有的方法
* 他們有這個(gè)功能,但是具體的實(shí)現(xiàn)放是不一樣的,需要實(shí)現(xiàn)他的類(lèi)在里面重新定義它新的生命,就比如,普通的防盜門(mén)里的貓眼就是簡(jiǎn)單的看
* 但是,還有一些貓眼的看有掃描的功能,不同的需求放在不同的類(lèi)里面來(lái)具體的實(shí)現(xiàn)
*/
void look();
}
public interface Lock {
/**
* 上鎖
*/
void upLock();
void downLock();
}
防盜門(mén)是門(mén)door的子類(lèi),繼承父類(lèi)開(kāi)門(mén)關(guān)門(mén)的方法,同時(shí)擁有上鎖,與貓眼的功能
public class AntiTheDoor extends Door implements Lock,CatEye{
@Override
public void look() {
System.out.println("防盜門(mén)的貓眼,伸頭瞪眼");
}
@Override
public void upLock() {
// TODO 自動(dòng)生成的方法存根
System.out.println("防盜門(mén)開(kāi)鎖:左轉(zhuǎn)三圈");
}
@Override
public void downLock() {
// TODO 自動(dòng)生成的方法存根
System.out.println("防盜門(mén)的關(guān)鎖,右轉(zhuǎn)三圈");
}
@Override
public void open() {
// TODO 自動(dòng)生成的方法存根
System.out.println("防盜門(mén)的開(kāi)門(mén):用頭頂");
}
@Override
public void close() {
// TODO 自動(dòng)生成的方法存根
System.out.println("防盜門(mén)的關(guān)門(mén):用腳蹬");
}
}
相比于防盜門(mén),鐵門(mén)只有上鎖的功能
public class IronDoor extends Door implements Lock{
@Override
public void upLock() {
System.out.println("鐵門(mén)的開(kāi)鎖,右轉(zhuǎn)三圈");
}
@Override
public void downLock() {
System.out.println("鐵門(mén)的上鎖,左轉(zhuǎn)三圈");
}
@Override
public void open() {
System.out.println("鐵門(mén)的開(kāi)門(mén)用腳蹬");
}
@Override
public void close() {
System.out.println("鐵門(mén)的關(guān)門(mén)方式,用頭頂");
}
}
測(cè)試類(lèi):
public class test {
public static void main(String[] args) {
AntiTheDoor atd = new AntiTheDoor();
atd.upLock();
atd.open();
atd.close();
atd.downLock();
}
}
運(yùn)行結(jié)果:
防盜門(mén)開(kāi)鎖:左轉(zhuǎn)三圈
防盜門(mén)的開(kāi)門(mén):用頭頂
防盜門(mén)的關(guān)門(mén):用腳蹬
防盜門(mén)的關(guān)鎖,右轉(zhuǎn)三圈
一個(gè)接口只有方法的特征沒(méi)有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類(lèi)實(shí)現(xiàn),而這些實(shí)現(xiàn)可以有具體不同的能力.
以上所述是小編給大家介紹的java接口基礎(chǔ)知識(shí)詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Spring?Security實(shí)現(xiàn)接口放通的方法詳解
在用Spring?Security項(xiàng)目開(kāi)發(fā)中,有時(shí)候需要放通某一個(gè)接口時(shí),我們需要在配置中把接口地址配置上,這樣做有時(shí)候顯得麻煩。本文將通過(guò)一個(gè)注解的方式快速實(shí)現(xiàn)接口放通,感興趣的可以了解一下2022-05-05
SpringBoot實(shí)現(xiàn)讀取YML,yaml,properties文件
yml,yaml,properties三種文件都是用來(lái)存放配置的文件,一些靜態(tài)數(shù)據(jù),配置的數(shù)據(jù)都會(huì)存放到里邊。本文主要為大家整理了SpringBoot實(shí)現(xiàn)讀取YML,yaml,properties文件的方法,需要的可以參考一下2023-04-04
Spring關(guān)閉Tomcat Servlet容器時(shí)內(nèi)存泄漏問(wèn)題解決方案
這篇文章主要介紹了Spring關(guān)閉Tomcat Servlet容器時(shí)內(nèi)存泄漏問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Java編譯錯(cuò)誤問(wèn)題:需要class,interface或enum
這篇文章主要介紹了Java編譯錯(cuò)誤問(wèn)題:需要class,interface或enum,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
SpringCloud創(chuàng)建多模塊項(xiàng)目的實(shí)現(xiàn)示例
,Spring Cloud作為一個(gè)強(qiáng)大的微服務(wù)框架,提供了豐富的功能和組件,本文主要介紹了SpringCloud創(chuàng)建多模塊項(xiàng)目的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
基于Java事件監(jiān)聽(tīng)編寫(xiě)一個(gè)中秋猜燈謎小游戲
眾所周知,JavaSwing是Java中關(guān)于窗口開(kāi)發(fā)的一個(gè)工具包,可以開(kāi)發(fā)一些窗口程序,然后由于工具包的一些限制,導(dǎo)致Java在窗口開(kāi)發(fā)商并沒(méi)有太多優(yōu)勢(shì),不過(guò),在JavaSwing中關(guān)于事件的監(jiān)聽(tīng)機(jī)制是我們需要重點(diǎn)掌握的內(nèi)容,本文將基于Java事件監(jiān)聽(tīng)編寫(xiě)一個(gè)中秋猜燈謎小游戲2023-09-09
詳解mall整合SpringBoot+MyBatis搭建基本骨架
這篇文章主要介紹了詳解mall整合SpringBoot+MyBatis搭建基本骨架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
springboot 使用logback啟動(dòng)報(bào)警報(bào)錯(cuò)的解決
這篇文章主要介紹了springboot 使用logback啟動(dòng)報(bào)警報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07

