接口詳細說明

接口概述

接口也是一種規范

接口的定義與特點

接口的格式如下:

//接口用關鍵字interface來定義
public interface 接口名 {// 常量// 抽象方法
} 

JDK8之前接口中只能是抽象方法和常量,沒有其他成分了。

接口不能實例化。

接口中的成員都是public修飾的,寫不寫都是,因為規范的目的是為了公開化。?

示例:?

public interface SportManInterface {// 接口中的成員:JDK 1.8之前只有常量 和 抽象方法// public static final 可以省略不寫,接口默認會為你加上!// public static final String SCHOOL_NAME = "黑馬";String SCHOOL_NAME = "黑馬";// 2、抽象方法//  public abstract 可以省略不寫,接口默認會為你加上!// public abstract void run();void run();// public abstract void eat();void eat();
}

接口的基本使用:被實現

接口是用來被類實現(implements)的,實現接口的類稱為實現類。

實現類可以理解成所謂的子類。

修飾符 class 實現類 implements 接口1, 接口2, 接口3 , ... {
}
//實現的關鍵字:implements

從上面可以看出,接口可以被類單實現,也可以被類多實現。

示例:

/**實現類(子類)*/
public class PingPongMan implements SportMan , Law{private String name;public PingPongMan(String name) {this.name = name;}@Overridepublic void rule() {System.out.println(name + "要遵章守法,不能隨意外出,酗酒,約會~~~");}@Overridepublic void run() {System.out.println(name + "必須要跑步訓練~~");}@Overridepublic void competition() {System.out.println(name + "需要參加國際比賽~~");}
}

接口實現的注意事項: 一個類實現接口,必須重寫完全部接口的全部抽象方法,否則這個類需要定義成抽象類。

接口與接口的關系:多繼承

基本小結

類和類的關系:單繼承。

類和接口的關系:多實現。

接口和接口的關系:多繼承,一個接口可以同時繼承多個接口。

接口多繼承的作用

規范合并,整合多個接口為同一個接口,便于子類實現。

JDK8開始接口新增方法

JDK8版本開始后,Java只對接口的成員方法進行了新增。

原因如下:

項目Version2.0需要對Inter接口豐富,加入10個新的抽象方法,此時改了接口就要所有實現類實現這些方法。

如何能在豐富接口功能的同時 又不對子類代碼進行更改呢?

允許接口中直接定義帶有方法體的方法,那么子類就無需實現新的方法。?

第一種:默認方法

類似之前寫的普通實例方法:必須用default修飾 默認會public修飾。需要用接口的實現類的對象來調用。

default void run(){System.out.println("--開始跑--");
}

第二種:靜態方法

默認會public修飾,必須static修飾。

注意:接口的靜態方法必須用本身的接口名來調用。

static void inAddr(){System.out.println("我們都在黑馬培訓中心快樂的學習Java!");
}

第三種:私有方法

就是私有的實例方法:,必須使用private修飾,從JDK 1.9才開始有的。

只能在本類中被其他的默認方法或者私有方法訪問。

private void go(){System.out.println("--準備--");
}

總結

JDK8開始后新增了那些方法?

默認方法:default修飾,實現類對象調用。

靜態方法:static修飾,必須用當前接口名調用

私有方法:private修飾,jdk9開始才有的,只能在接口內部被調用。

他們都會默認被public修飾。?

注意:JDK8新增的3種方法我們自己在開發中很少使用,通常是Java源碼涉及到的,我們需要理解、識別語法、明白調用關系即可。

使用接口的注意事項

1、接口不能創建對象

2、一個類實現多個接口,多個接口中有同樣的靜態方法不沖突。

3、一個類繼承了父類,同時又實現了接口,父類中和接口中有同名方法,默認用父類的。

4、一個類實現了多個接口,多個接口中存在同名的默認方法,不沖突,這個類重寫該方法即可。 5、一個接口繼承多個接口,是沒有問題的,如果多個接口中存在規范沖突則不能多繼承。

下面的代碼就存在規范沖突,兩個run的返回值不一樣。

//interface AAA{
//    int run();
//}
//interface BBB{
//    void run();
//}
//
//interface CCC extends AAA, BBB{
//}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714479.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714479.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

webpack打包一個文件,做了哪些事情

用webpack打包一個文件,在webpack內部做了哪些事情,用代碼詳細介紹一下 當你使用 Webpack 打包一個文件時,Webpack 內部會進行一系列操作來實現模塊加載、代碼轉換、依賴分析、模塊打包等功能。以下是使用 Webpack 打包一個簡單 JavaScript …

svn介紹 4.0

一、svn介紹(版本控制工具) 1、svn的定義: svn是一個開放源代碼的版本控制系統,通過采用分支管理系統的高效管理,簡而言之就是用于多個人共同開發同一個項目,實現共享資源,實現最終集中式個管…

電腦數據丟失是什么原因 易我數據恢復軟件下載 easyrecovery數據恢復軟件下載 電腦數據刪除了怎么恢復 電腦數據庫損壞了怎么找回

目錄 一、電腦數據丟失是什么原因 二、電腦數據丟失如何恢復 三、EasyRecovery恢復電腦數據的方法介紹 電腦是我們大家熟悉并且常用的數據存儲設備,也是綜合性非常強的數據處理設備。對于電腦設備來講,最主要的數據存儲介質是硬盤,電腦硬…

CMU15445實驗總結(Spring 2023)

CMU15445實驗總結(Spring 2023) 背景 菜鳥博主是2024屆畢業生,學歷背景太差,導致23年秋招無果,準備奮戰春招。此前有讀過LevelDB源碼的經歷,對數據庫的了解也僅限于LevelDB。奔著”有對比才能學的深“的理念,以及緩解…

linux系統Jenkins工具配置webhook自動部署

Jenkins工具webhook自動部署 webhook自動部署webhook的意義操作流程jenkins頁面操作gitlab頁面操作 webhook自動部署 webhook的意義 自動化部署:Webhook 可以在代碼提交、合并請求或其他特定事件發生時自動觸發 Jenkins 構建和部署任務,從而實現自動化…

C#,K中心問題(K-centers Problem)的算法與源代碼

1 K中心問題(K-centers Problem) k-centers problem: 尋找k個半徑越小越好的center以覆蓋所有的點。 比如:給定n個城市和每對城市之間的距離,選擇k個城市放置倉庫(或ATM或云服務器),以使城市…

【JavaEE進階】 Spring AOP源碼簡單剖析

文章目錄 🍃前言🍀Spring AOP源碼剖析?總結 🍃前言 前面的博客中,博主對代理模式進行了一個簡單的講解,接下來博主將對Spring AOP源碼進行簡單剖析,使我們對Spring AOP了解的更加深刻。 🍀Sp…

leetcode 簡單

1. 兩數之和 兩數之和 方法1:暴力枚舉 兩次for 循環,記錄索引和值,找到合適的值然后返回 方法2:使用哈希表 第一次for循環的時候,就可以使用哈希表記錄key的value,可以實現時間復雜度是1,要分…

【前端素材】推薦優質后臺管理系統網頁Highdmin平臺模板(附源碼)

一、需求分析 1、系統定義 后臺管理系統是一種用于管理和控制網站、應用程序或系統的管理界面。它通常被設計用來讓網站或應用程序的管理員或運營人員管理內容、用戶、數據以及其他相關功能。后臺管理系統是一種用于管理網站、應用程序或系統的工具,通常由管理員使…

express+mysql+vue,從零搭建一個商城管理系統7--文件上傳,大文件分片上傳

提示:學習express,搭建管理系統 文章目錄 前言一、安裝multer,fs-extra二、新建config/upload.js三、新建routes/upload.js四、修改routes下的index.js五、修改index.js六、新建上傳文件test.html七、開啟jwt驗證token,通過login接…

Vue.js+SpringBoot開發開放實驗室管理系統

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、研究內容2.1 實驗室類型模塊2.2 實驗室模塊2.3 實驗管理模塊2.4 實驗設備模塊2.5 實驗訂單模塊 三、系統設計3.1 用例設計3.2 數據庫設計 四、系統展示五、樣例代碼5.1 查詢實驗室設備5.2 實驗放號5.3 實驗預定 六、免責說明 一、摘…

vue3的router

需求 路由組件一般放在&#xff0c;pages或views文件夾, 一般組件通常放在component文件夾 路由的2中寫法 子路由 其實就是在News組件里面&#xff0c;再定義一個router-view組件 他的子組件&#xff0c;機會渲染在router-view區域 路由傳參 <RouterLink :to"/news…

解決導入項目后在idea中不顯示的問題

問題&#xff1a; 今天下午重新打開寒假之前負責的項目&#xff0c;發現打不開了&#xff0c; 從master拉取最新代碼到我的分支&#xff0c;發現我的分支上顯示就是這樣子&#xff0c;無論怎么更新代碼都不行。 原因&#xff1a; 在上一次上傳代碼的時候&#xff0c;我把我分…

leetcode括號生成

題目描述 解題思路 首先看到題目&#xff0c;一開始是并沒有思路的。這時候可以在紙上進行演算一下結果。當只有一對括號的時候&#xff0c;我們可以得知結果[“()”],當有兩對括號的時候&#xff0c;我們可以發現&#xff0c;括號在第一個基礎上&#xff0c;要么在括號內部出…

靜態時序分析:SDC約束命令set_case_analysis詳解

相關閱讀 靜態時序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 目錄 指定值 指定端口/引腳列表 簡單使用 set_case_analysis命令用于對電路進行特定模式的設定&#xff0c;例如對于一個工作在正常模式下的芯片&#xff0c;…

HTML5新特性:為Web帶來的翻天覆地變化

隨著互聯網的發展&#xff0c;HTML5作為Web開發的重要里程碑&#xff0c;為我們帶來了一系列令人興奮的新特性和功能。本文將帶領大家探索HTML5的新特性&#xff0c;揭示其對Web技術的巨大影響。 一、介紹 HTML5作為HTML的最新版本&#xff0c;不僅強化了網頁結構與內容&#…

Android 解決引入的三方庫中類名沖突問題

參考&#xff1a; Android開發——如何解決三方庫中的類名沖突問題_android 類沖突-CSDN博客 Android 解決 jar/aar 包類名沖突 - 簡書 實操步驟 1.提前安裝好unzip-5.51-bin&#xff0c;proguard-7.4.0&#xff0c;jarjar-1.4軟件 2.解壓包名沖突的 AAR 文件 進入到需要修…

reach功能的使用

1.reach添加后 1.reach添加后2 2.拷貝reach最后一幀的動作 3.刪除reach(注意畫選時如果reach延長不能直接刪否則以前的動畫也會刪掉&#xff0c;要縮短reach后再刪另外這兩個灰原點也要刪掉否則影響后邊新加clip的對齊會出現亂七八糟的事情) 4.刪除reach后&#xff0c;光標移到…

收藏:數據防泄漏系統推薦,數據防泄漏系統有哪些?

一金融機構在近期發生了一起數據泄露事件。 經過調查&#xff0c;發現是由于一名員工將包含客戶敏感信息的文件通過電子郵件發送給了未經授權的第三方。 這一事件導致客戶數據泄露&#xff0c;給該機構帶來了嚴重的聲譽損失和信任危機。 這一案例凸顯了數據防泄漏系統的重要性…

Neo4j aura 官方網站快速入門新手教精讀-從官方教程學習知識圖譜

Neo4j 官方網站快速入門新手教精讀 本文旨在為Neo4j新手提供一份全面的入門指南。除了基礎的文本解釋&#xff0c;我在里面還插入了每一步驟的詳細截圖或者自己畫的圖&#xff0c;從官方了解知識肯定比自己亂看要權威一些&#xff0c;有看不懂的不要糾結了解大概意思即可&#…