尚硅谷 java 學習Day19 抽象類與抽象方法、接口、內部類

6-5 抽象類(abstract)與抽象方法(important)


一、什么叫抽象類:

有時候將一個父類設計的非常抽象,以至于它沒有具體的實例,這樣的類稱為抽象類

abstract關鍵字的使用:

? 1、abstract:抽象的

? 2、abstract 可以修飾的結構:類和方法

? 3、abstract 修飾類: 抽象類

? >此類不能實例化

? >類中仍然提供構造器,以便子類調用 (只要是類,一定會有構造器)

? >開發中,都會提供抽象類的子類,讓子類對象實例化,完成相關操作

包含抽象方法的類 一定是一個抽象類。反之,抽象類中可以沒有抽象方法

? 4、abstract 修飾方法:抽象方法

? >只有方法的聲明,沒有方法體

? >包含抽象方法的類 一定是一個抽象類。反之,抽象類中可以沒有抽象方法

? >若子類重寫了父類中的所有的抽象方法后,則此子類方可實例化;

? >若子類沒有重寫父類中所有的抽象方法,則此子類也是一個抽象類,需要使用 abstract 修飾

抽象類的格式 例如:

public abstract void eat();

abstract 的使用上的注意點:

1、不能用來修飾:屬性、構造器等結構

2、abstract 不能用來修飾私有方法、靜態方法、final 的方法、final 的類


抽象類的應用:模版方法的設計模式


6-6 接口(Interface):概述


接口的使用:

1、接口使用 interface 來定義

2、Java 中,接口和類是并列的兩個結構

3、如何定義接口:定義接口中的成員

? 3.1 JDK7 及以前:只能定義全局常量和抽象方法

? >全局常量:public static final 的 (但是在編寫代碼的時候可以省略不寫)

? >抽象方法:Public abstract 的

? 3.2 JDK8:除了定義全局常量和抽象方法之外,還可以定義靜態方法、默認方法(default)

? >接口中定義的靜態方法,只能通過接口去調用

? >通過實現類的對象,可以調用接口中的默認方法;如果實現類重寫了接口中的默認方法,調用時,調用重寫后的方法

? >如果子類(或實現類)繼承的父類和實現的接口中聲明了同名同參數的方法,那么子類在沒有重寫此方法的情況下,默認調用父類中的同名同參的方法–>類優先原則

? >如果實現類實現了多個接口,而這多個接口中定義了同名同參數的默認方法,那么在實現類沒有重寫此方法的情況下,報錯—>接口沖突

? >如何在子類(或實現類)的方法中調用父類、接口中被重寫的方法 主要利用 super

4、接口中不能定義構造器!!! 意味著接口不可以實例化

5、java 開發中,接口都通過讓類去實現(implement)的方式來使用

? 如果實現類覆蓋了 接口中的所有的抽象方法,則此實現類可以實例化

? 如果實現類沒覆蓋接口的所有的抽象方法,則此實現類仍為一個抽象類

6、Java 類可以實現多個接口 —>彌補了 Java 單繼承性的局限性

? 格式:class AA extends BB implements CC DD EE {}

7、接口之間 可以繼承,而且 可以多繼承

8、接口的具體使用,體現多態

9、接口實際上看作一種規范


面試題: 抽象類與接口 有哪些異同?

相同點
  1. 都不能被實例化
    • 抽象類和接口都不能直接創建對象,必須通過子類(實現類)來實例化。
  2. 都可以包含抽象方法
    • 抽象方法沒有方法體,子類或實現類必須重寫它們。
  3. 都用于定義類的行為規范
    • 它們都用于約束子類,使子類遵循一定的設計規則。
不同點**
比較項抽象類接口
關鍵字abstract classinterface
成員既可以有抽象方法,也可以有普通方法和成員變量只能有抽象方法(Java 8+ 可有 default 方法和 static 方法)
構造方法可以有構造方法不能有構造方法
變量允許有普通成員變量變量默認是 public static final(常量)
訪問修飾符方法可以是 publicprotecteddefault,甚至 private方法默認是 public,不能有 privateprotected
多繼承只能繼承一個抽象類(單繼承)可以實現多個接口(多繼承)
使用場景適用于具有“is-a”關系的類(比如“動物是一種生物”)適用于“能做什么”的功能規范(比如“可飛行的對象”)


6-7 類的內部成員之五:內部類


1、在 Java 中,允許一個類的定義位于另一個類的內部,前者稱為內部類,后者稱為外部類

2、內部類的分類: 成員內部類 vs 局部內部類(方法內、代碼塊內、構造器內)

3、成員內部類:

? 一方面,作為外部類的成員:

? >調用外部類的結構

? >可以被static 修飾

? >可以被四種不同的權限修飾

? 另一方面,作為一個類:

? >類內可以定義屬性、方法、構造器等

? >可以被 final 修飾(言外之意:不被 final 修飾可以被繼承

? >可以被 abstract 修飾

4、關注如下三個問題

? 一、如何實例化成員內部類的對象

IMG_0033

? 二、如何在成員內部類中區分調用外部類的結構

IMG_0035

著重看一下三者調用的格式

三、開發中,局部內部類的使用

IMG_0037



總結

今日學習內容比較多,也有一定重疊,注意區分各部分的內容,重點主要在于接口和抽象類,內部類使用的頻次比較少。
今日箴言:
This society is not friendly to introverted people.Don’t let laziness and procrastination imprision your free soul.

(這個社會對內向的人并不友好,不要被懶惰和拖延禁錮你自由的靈魂)

ps:今日看了國足 u20 比賽,1-2 輸給了澳大利亞,機會也挺多,可惜沒把握住,兩個丟球都是自己的失誤被打反擊產生的,同時兩個丟球間隔不到兩分鐘,這就和生活一樣,挫折有時候總是接踵而至,可能一個打擊讓你還沒回過神,下一個又來了,所以遇到挫折的時候不要走神,正視挫折,并不斷去戰勝它,不然確實很容易被接二連三的挫折打垮!

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

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

相關文章

【LeetCode Hot100 鏈表(上)】相交鏈表、反轉鏈表、回文鏈表、環形鏈表、合并兩個有序鏈表、兩數相加

鏈表 1. 相交鏈表問題描述解決思路代碼實現 2. 反轉鏈表問題描述解決思路代碼實現 3. 回文鏈表問題描述解決思路代碼實現 4. 環形鏈表問題描述解決思路代碼實現 5. 環形鏈表II問題描述解決思路代碼實現 6. 合并兩個有序鏈表問題描述解決思路代碼實現 7. 兩數相加問題描述解決思…

【Python pro】基本數據類型

一、數字類型 1.1 數字類型的組成 1.1.1 整數 (1)十進制,二進制0b,八進制0o,十六進制0x print(16 0b10000 0o20 0x10) # 輸出:True(2)十進制轉其他進制 a bin(16) b oct(1…

拯救者電腦在重裝系統之后電源計劃丟失Fn+Q切換不了模式怎么恢復?

參考聯想知識庫的一下鏈接: https://iknow.lenovo.com.cn/detail/196192 其中下載的解壓文件后的文件需要復制粘貼到D盤的根目錄下,再來運行文件。若在生成的log文件中看到導入成功以及控制面板中看到已添加的電源計劃即可 如果還是無效可是試試以下的…

ubuntu 執行 sudo apt-get update 報錯

記錄一下,遇到這個問題了,網絡上看到的解決辦法,親測有效 執行sudo apt-get update ,卻報以下錯誤,“SECURITY: URL redirect target contains control characters rejecting ” 經檢查發現,/etc/apt/source.list 下的…

深度集成DeepSeek大模型:WebSocket流式聊天實現

目錄 5分鐘快速接入DeepSeek大模型:WebSocket實時聊天指南創建應用開發后端代碼 (Python/Node.js)結語 5分鐘快速接入DeepSeek大模型:WebSocket實時聊天指南 創建應用 訪問DeepSeek官網 前往 DeepSeek官網。如果還沒有賬號,需要先注冊一個。…

java斷點調試(debug)

在開發中,新手程序員在查找錯誤時, 這時老程序員就會溫馨提示,可以用斷點調試,一步一步的看源碼執行的過程,從而發現錯誤所在。 重要提示: 斷點調試過程是運行狀態,是以對象的運行類型來執行的 斷點調試介紹 斷點調試是…

軟件技術實訓室解決方案(2025年最新版)

軟件產業作為新興產業的核心組成部分,是推動數字經濟發展的重要力量。在“十四五”規劃的新機遇與挑戰下,我國已明確將加強關鍵數字技術創新應用作為戰略重點,并將軟件和信息技術服務業的發展列為重中之重。這不僅是為了加速構建現代產業體系…

foobar2000設置DSP使用教程及軟件推薦

foobar2000安卓中文版:一款高品質手機音頻播放器 foobar2000安卓中文版是一款備受好評的高品質手機音頻播放器。 幾乎支持所有的音頻格式,包括 MP3、MP4、AAC、CD 音頻等。不論是經典老歌還是最新的流行音樂,foobar2000都能完美播放。除此之…

DeepSeek企業級部署實戰指南:從服務器選型到Dify私有化落地

對于個人開發者或嘗鮮者而言,本地想要部署 DeepSeek 有很多種方案,但是一旦涉及到企業級部署,則步驟將會繁瑣很多。 比如我們的第一步就需要先根據實際業務場景評估出我們到底需要部署什么規格的模型,以及我們所要部署的模型&…

I2C、SPI、UART

I2C:串口通信,同步,半雙工,雙線(數據線SDA時鐘線SCL),最大距離1米到幾米 SPI(串行外設接口):串口通信,同步,全雙工,四線&…

uniapp 連接mqtt

1:下載插件 npm install mqtt 2:創建 mqtt.js /* main.js 項目主入口注入實例 */ // import mqttTool from ./lib/mqttTool.js // Vue.prototype.$mqttTool mqttTool/* 使用范例見 /pages/index/index.vue */ // mqtt協議:H5使用ws/wss APP-…

shell腳本備份PostgreSQL數據庫和庫下表

注意: 以下為對PostgreSQL13.16版本數據庫備份shell腳本參考請確認備份節點上psql和pgdump的版本不至于太低,建議>13.16該腳本目前是對于整庫、(默認針對public這個schema,如果有其他schema,請自行添加一層循環&am…

EXCEL解決IF函數“您已為此函數輸入太多個參數”的報錯

IF函數的基本結構是IF(條件, 值為真時的結果, 值為假時的結果),所以標準的IF函數最多只能有三個參數。當用戶輸入的參數超過三個時,Excel就會報這個錯誤。比如多個IF語句疊加,但可能在嵌套的過程中沒有正確關閉每個IF函數的括號,導…

圖像質量評價指標-UCIQE-UIQM

一、評價指標UCIQE 在文章《An underwater color image quality evaluation metric》中,提到的了評價指標UCIQE(Underwater Colour Image Quality Evaluation),是一種無參考圖像質量評價指標,主要用于評估水下圖像的質…

Vue 前端開發中的路由知識:從入門到精通

文章目錄 引言1. Vue Router 簡介1.1 安裝 Vue Router1.2 配置 Vue Router1.3 在 Vue 實例中使用 Vue Router 2. 路由的基本用法2.1 路由映射2.2 路由視圖2.3 路由鏈接 3. 動態路由3.1 動態路徑參數3.2 訪問動態參數3.3 響應路由參數的變化 4. 嵌套路由4.1 定義嵌套路由4.2 渲染…

基于Springboot+微信小程序調用文心一言大模型實現AI聊天

一、文章前言 此文主要實現基于Springboot微信小程序調用文心一言大模型實現AI聊天對話功能,使用Java作為后端語言進行支持,界面友好,開發簡單。 二、開發流程及工具準備 2.1、登錄百度智能云平臺,獲取 API Key 和 Secret Key兩個…

leaflet前端初始化項目

1、通過npm安裝leaflet包,或者直接在項目中引入leaflet.js庫文件。 npm 安裝:npm i leaflet 如果在index.html中引入leaflet.js,在項目中可以直接使用變量L. 注意:盡量要么使用npm包,要么使用leaflet.js庫,兩者一起使用容易發生…

Deepseek官網接口文檔

API 接口 生成完成 生成聊天完成 創建模型 列出本地模型 顯示模型信息 復制模型 刪除模型 拉取模型 推送模型 生成嵌入 列出運行中的模型 版本 約定 模型名稱 模型名稱遵循 model:tag 格式,其中 model 可以有一個可選的命名空間,例如 ex…

容器運行常見數據庫

一.涉及鏡像壓縮包 均為amd架構版本:mysql:5.7.42、postgres:13.16、dm8:20250206_rev257733_x86_rh6_64、oceanbase-ce:v4.0、opengauss:5.0.2 通過網盤分享的文件:db.tgz 鏈接: https://pan.baidu.com/s/1EBbFPZj1FxCA4_GxjVunWg?pwd563s 提取碼: 5…

python爬蟲系列課程2:如何下載Xpath Helper

python爬蟲系列課程2:如何下載Xpath Helper 一、訪問極簡插件官網二、點擊搜索按鈕三、輸入xpath并點擊搜索四、點擊推薦下載五、將下載下來的文件解壓縮六、打開擴展程序界面七、將xpath.crx文件拖入擴展程序界面一、訪問極簡插件官網 極簡插件官網地址:https://chrome.zzz…