Java進階學習筆記15——接口概述

認識接口:

Java提供了一個關鍵字Interface,用這個關鍵字我們可以定義一個特殊的結構:接口。

接口不能創建對象。

注意:接口不能創建對象,接口是用來被類實現(implements)的,實現接口的類稱為實現類。

一個類可以實現多個接口(接口可以理解為干爹),實現類實現多個接口,必須重寫全部接口的全部抽象方法,否則實現類需要定義成抽象類。

父類只有一個,干爹能有多個。

抽象類是需要繼承的,繼承只能單繼承,你如果繼承了抽象類,那你就不能繼承其他類。

package cn.ensource.d7_interface;// 實現類
public class D implements B, C{@Overridepublic void testb1() {}@Overridepublic void testb2() {}@Overridepublic void testc1() {}@Overridepublic void testc2() {}
}

接口的好處(重點)

1)彌補了類單繼承的不足,一個類同時可以實現多個接口;

2)讓程序員可以面向接口編程, 這樣程序員就可以靈活方便地切換各種業務實現。

我們可以多創建幾個方法,何必要通過接口來實現呢?

這個是特別有必要的。

其實可以理解為不是每個人都會所有人都會的,得靠具體實現的這個人到底會什么,接口就相當于這個實例化的人會的技能。

開發的時候接口是別人寫的,你是調別人的,所以具體的內容不是你寫的。

這樣寫的話,邏輯清晰,一看就看出哪里是重點,后期好維護。

使用接口可以輕松方便地新建類,而不是在已有類中修改。

implement接口可以顯現地知道你是誰,能做什么?

一個接口被多個類實現,有什么好處呢?

面向接口編程。

package cn.ensource.d8_interface2;public class Test {public static void main(String[] args) {// 目標:搞清楚使用接口的好處Driver s = new A();s.drive();Driver d = new B();  // 程序可以面向接口進行編程d.drive();           // 父類類型指向子類對象 多態}
}class B implements Driver{@Overridepublic void drive() {}
}class A extends Student implements Driver, Singer{@Overridepublic void drive() {System.out.println("A可以driver");}@Overridepublic void sing() {System.out.println("A可以sing");}
}class Student {}interface Driver {void drive();
}interface Singer {void sing();
}

接口的好處:

解決類單繼承的問題,通過接口,我們可以讓一個類有一個親爹的同時,還可以找多個干爹去拓展自己的功能。

為什么我們要通過接口,也就是去找干爹,來拓展自己的功能呢?

因為通過接口去找干爹,別人通過你implements的接口,就可以顯現地知道你是誰,從而也就可以放心的把你當做誰來用了。

使用接口的第二個好處是什么?

一個類我們說可以實現多個接口,同樣,一個接口也可以被多個類實現的,這樣做的好處是我們的程序就可以面相接口編程了,這樣我們程序員就可以方便的靈活切換各種業務實現了。?而不用改后續代碼了。

接口不能實例化

接口如何實現實例化呢?參照多態的方式,通過實現類對象實例化,這叫接口多態。

多態的形式:具體類多態、接口類多態、接口多態。

接口的子類:

要么重寫接口中的所有抽象方法。

要么子類也是抽象方法。

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

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

相關文章

中國電子學會(CEIT)2023年05月真題C語言軟件編程等級考試三級(含詳細解析答案)

中國電子學會(CEIT)考評中心歷屆真題(含解析答案) C語言軟件編程等級考試三級 2023年05月 編程題五道 總分:100分一、找和為K的兩個元素(20分) 在一個長度為n (n < 1000)的整數序列中,判斷是否存在某兩個元素之和為k。 時間限制: 1000 內存限制: 65536 輸入 …

基于Spring Boot的高校圖書館管理系統

項目和論文都有企鵝號2583550535 基于Spring Boot的圖書館管理系統||圖書管理系統_嗶哩嗶哩_bilibili 第1章 緒論... 1 1.1 研究背景和意義... 1 1.2 國內外研究現狀... 1 第2章 相關技術概述... 2 2.1 后端開發技術... 2 2.1.1 SpringBoot 2 2.1.2 MySQL.. 2 2.1.3 My…

unity中如何插入網頁

在Unity中插入自己的網頁通常是通過使用Unity的WebGL構建目標和HTML頁面來實現的。以下是一些步驟&#xff1a; 構建你的Unity項目為WebGL&#xff1a;在Unity中&#xff0c;選擇Build Settings&#xff08;構建設置&#xff09;&#xff0c;將Platform&#xff08;平臺&#x…

vr商品全景展示場景編輯軟件的優點

3D模型展示網站搭建編輯器以強大的3D編輯引擎和逼真的渲染效果&#xff0c;讓您輕松實現模型展示的優化。讓用戶通過簡單的操作&#xff0c;就能滿足個人/設計師/商戶多樣化展示的需求&#xff0c;讓您的模型成為獨一無二的杰作。 3D模型展示網站搭建編輯器采用國內領先的實時互…

java繼承使用細節二

構造器 主類是無參構造器時會默認調用 public graduate() {// TODO Auto-generated constructor stub也就是說我這里要用構造器會直接調用父類。它是默認看不到的 &#xff0c;System.out.println("graduate");} 但當主類是有參構造器如 public father_(int s,doubl…

c語言:將小寫字母轉換為大寫字母

//將小寫字母轉換為大寫字母 #include <stdio.h> #include <ctype.h> int main() { char arr[]"you are low"; int i0; while(arr[i]) { if(islower(arr[i])) { arr[i]arr[i]-32; } i; } printf("%s\n",arr); return 0; }

微調Llama3實現在線搜索引擎和RAG檢索增強生成功能

視頻中所出現的代碼 Tavily SearchRAG 微調Llama3實現在線搜索引擎和RAG檢索增強生成功能&#xff01;打造自己的perplexity和GPTs&#xff01;用PDF實現本地知識庫_嗶哩嗶哩_bilibili 一.準備工作 1.安裝環境 conda create --name unsloth_env python3.10 conda activate …

周末總結(2024/05/25)

工作 人際關系核心實踐&#xff1a; 要學會隨時回應別人的善意。執行時間控制在5分鐘以內 堅持每天早會打招呼 工作上的要點 現狀&#xff08;接受破爛現狀&#xff0c;改變狀態&#xff09; - 這周使用和執行了生產環境發布流程(2天&#xff09;&#xff0c;2天時間在寫Java…

大膽預測:計算機將要回暖

中概財報集體亮眼 雖然最近幾天恒指&#xff08;港股&#xff09;稍有回落&#xff0c;但年線仍有 9% 的上漲。 過去三年&#xff0c;恒指分別下跌 14.08%、15.46% 和 13.82%。 而在近期&#xff0c;國內各大互聯網都公布了財報&#xff0c;別看各個大廠的作妖不斷&#xff0c;…

[前端|vue] v-if 和v-show的區別,為什么功能會類似

v-if 和 v-show 都是 Vue 中用于條件渲染的指令&#xff0c;但它們之間存在幾個關鍵區別&#xff0c;這些區別導致了它們在不同場景下的適用性也有所不同&#xff1a; v-if 的特點&#xff1a; 條件渲染&#xff1a;v-if 是一個動態的條件渲染指令&#xff0c;它會根據表達式的…

dubbo復習:(8)使用sentinel對服務進行降級

一、下載sentinel-dashboard控制臺應用并在8080端口啟動 二、項目添加springboot 和dubbo相關依賴&#xff08;降級規則并未持久化&#xff0c;如果需要持久化&#xff0c;如果需要持久化降級規則&#xff0c;只需增加nacos相關依賴并在nacos中進行配置&#xff0c;然后配置app…

會話機制:Session

1、什么是會話&#xff1a; 會話對應的英語單詞&#xff1a;session 用戶打開瀏覽器&#xff0c;進行一系列操作&#xff0c;然后最終將瀏覽器關閉&#xff0c;這個整個過程叫做&#xff1a;一次會話。會話在服務器端也有一個對應的java對象&#xff0c;這個java對象叫做&…

使用Python Tkinter創建GUI應用程序

大家好&#xff0c;當我們談及使用Python Tkinter創建GUI應用程序時&#xff0c;我們涉及的不僅是技術和代碼&#xff0c;更是關于創造力和用戶體驗的故事。Tkinter作為Python標準庫中最常用的GUI工具包&#xff0c;提供了豐富的功能和靈活的接口&#xff0c;讓開發者能夠輕松地…

每日一題(4)——String連接,替換,比較,查找等

主要是一些字符串的連接&#xff0c; 替換&#xff0c;比較&#xff0c;去首尾空格&#xff0c;查找等操作&#xff1b; class ZiFu{public static void main(String []args){String s1"hello world";String s2new String("hello,world");s2" "…

Vue3判斷變量和對象不為null和undefined

Vue3判斷變量和對象不為null和undefined 一、判斷變量二、判斷對象 一、判斷變量 在 Vue 3 中&#xff0c;你可以使用 JavaScript 提供的常規方式來檢查變量是否不為 null 和不為 undefined。你可以分別使用嚴格不等運算符 ! 來比較變量是否不為 null 和不為 undefined。以下是…

【基于springboot+vue的房屋租賃系統】

介紹 本系統是基于springbootvue的房屋租賃系統&#xff0c;數據庫為mysql&#xff0c;可用于日常學習和畢設&#xff0c;系統分為管理員、房東、用戶&#xff0c;部分截圖如下所示&#xff1a; 部分界面截圖 用戶 管理員 聯系我 微信&#xff1a;Zzllh_

打開服務器遠程桌面連接不上,可能的原因及相應的解決策略

在解決遠程桌面連接不上服務器的問題時&#xff0c;我們首先需要從專業的角度對可能的原因進行深入分析&#xff0c;并據此提出針對性的解決方案。以下是一些可能的原因及相應的解決策略&#xff1a; 一、網絡連接問題 遠程桌面連接需要穩定的網絡支持&#xff0c;如果網絡連接…

金融業務及其他學習資料相關

目錄 金融業務相關學習資料 道路交通安全考試科一學習資料(2023年版) 英語學習資料

ArcGIS提取含有計曲線的等高線

喜歡就關注我們吧&#xff01; 今天我么來看看&#xff0c;如何利用DEM提取含有計曲線的等高線&#xff01; 常規的話我們利用DEM提取的等高線都是不帶計曲線的&#xff0c;無法把計曲線標注出來&#xff0c;今天我們就來看下&#xff0c;如何處理一下哦&#xff01;提取帶有計…

springboot打包目錄解析

一、引言 Java開發中我們使用最多的便是spring框架&#xff0c;比如springboot應用。微服務模式下&#xff0c;每個服務都是一個springboot應用&#xff0c;都會被打包成一個可執行jar包。那么我們有多少人嘗試去了解過這個可執行jar到底是什么&#xff1f;它的結構是什么樣的…