學習日記-day13-5.22

完成目標:
?

知識點:

1.抽象注意事項

知識點

核心內容

重點

抽象類實例化限制

抽象類不能直接實例化對象,只能創建非抽象子類的對象

嘗試實例化抽象類會觸發編譯錯誤

抽象方法與抽象類關系

抽象類不一定包含抽象方法,但含抽象方法的類必須是抽象類

定義順序影響類聲明(先有抽象方法需聲明抽象類)

子類重寫要求

子類必須重寫父類所有抽象方法,否則需聲明為抽象類

漏寫重寫方法等價于隱含繼承父類抽象方法

抽象類成員結構

可包含成員變量/構造方法/普通方法,與普通類差異僅在于抽象方法

構造方法用于子類初始化父類屬性(非自身實例化)

構造方法作用機制

抽象類構造方法專用于子類對象初始化時設置父類屬性

通過super()調用父類構造方法實現屬性傳遞

2.抽象實例

某IT公司有多名員工,按照員工負責的工作不同,進行了部門的劃分(研發部、維護部)。

研發部(Developer)根據所需研發的內容不同,又分為 JavaEE工程師 、Android工程師 ;

維護部(Maintainer)根據所需維護的內容不同,又分為 網絡維護工程師(Network) 、硬件維護工程師(Hardware) 。

公司的每名員工都有他們自己的員工編號、姓名,并要做它們所負責的工作。

工作內容:

- JavaEE工程師: 員工號為xxx的 xxx員工,正在研發電商網站

- Android工程師:員工號為xxx的 xxx員工,正在研發電商的手機客戶端軟件

- 網絡維護工程師:員工號為xxx的 xxx員工,正在檢查網絡是否暢通

- 硬件維護工程師:員工號為xxx的 xxx員工,正在修復電腦主板

根據描述,完成員工體系中所有類的定義,并指定類之間的繼承關系。進行XX工程師類的對象創建,完成工作方法的調用。

public abstract class Employee {private int id;private String name;public Employee() {}public Employee(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public abstract void work();
}```
public abstract class Developer extends Employee{
}
public class JavaEE extends Developer{@Overridepublic void work() {//System.out.println("員工號為:"+getId()+"的"+getName()+"正在開發網站");System.out.println("員工號為:"+this.getId()+"的"+this.getName()+"正在開發網站");}
}
public class Android extends Developer{@Overridepublic void work() {//System.out.println("員工號為:"+getId()+"的"+getName()+"正在開發app");System.out.println("員工號為:"+this.getId()+"的"+this.getName()+"正在開發app");}
}
public class Test01 {public static void main(String[] args) {JavaEE javaEE = new JavaEE();javaEE.setId(1);javaEE.setName("濤哥");javaEE.work();System.out.println("===============");Android android = new Android();android.setId(2);android.setName("金蓮");android.work();}
}

3.接口

知識點

核心內容

重點

接口定義

使用interface關鍵字定義引用數據類型,是一種標準/規范

接口與抽象類的區別; 接口成員默認修飾符規則

接口實現

通過implements關鍵字創建實現類;

必須重寫所有抽象方法

實現類與子類概念區分; 接口不能直接實例化

JDK7接口特性

僅包含: - public abstract抽象方法; - public static final常量

抽象方法修飾符可省略; 常量必須初始化

JDK8新增特性

支持: - default默認方法(帶實現); - static靜態方法

默認方法沖突解決規則; 靜態方法接口專屬調用方式

多態應用

通過接口引用指向實現類對象; Mouse m = new Mouse()

運行時綁定機制; 類型轉換異常風險點

生活化案例

插座/USB接口類比: - 統一標準; - 強制規范

接口設計開閉原則體現; 擴展性vs約束性平衡

1.定義接口:

? public interface 接口名{}

2.實現:

? public class 實現類類名 implements 接口名{}

3.使用:

? a.實現類實現接口

? b.重寫接口中的抽象方法

? c.創建實現類對象(接口不能直接new對象)

? d.調用重寫的方法 ? ?

public interface USB {public abstract void open();public abstract void close();
}public class Mouse implements USB{@Overridepublic void open() {System.out.println("鼠標打開");}@Overridepublic void close() {System.out.println("鼠標關閉");}
}public class Test01 {public static void main(String[] args) {Mouse mouse = new Mouse();mouse.open();mouse.close();}
}

4.默認方法?靜態方法

知識點

核心內容

重點

默認方法

JDK8新增特性,格式為public default 返回值 方法名(),包含方法體實現,可通過實現類對象調用

1. 與抽象方法區別:有方法體;

2. 可重寫可不重寫;

3. 必須通過實現類調用

靜態方法

JDK8新增,格式為public static 返回值 方法名(),

直接通過接口名調用

1. 不需要實現類;

2. 調用方式與類靜態方法相同

應用場景

1. 作為臨時添加的小功能;

2. 避免因添加抽象方法導致所有實現類報錯

1. 默認方法:功能擴展;

2. 靜態方法:工具類功能

語法注意點

1. 實現類重寫默認方法時不能加default關鍵字;

2. 靜態方法不能被實現類繼承或重寫

1. @Override注解可驗證重寫;

2. 接口靜態方法 vs 類靜態方法調用方式

5.接口的成員變量

知識點

核心內容

重點

接口中的成員變量定義

使用public static final修飾成員變量(如int NUM=100),默認隱含該修飾,需手動初始化

final變量的不可變性、默認修飾符規則

靜態成員調用方式

通過接口名直接調用靜態變量(如USB.NUM)

接口與類靜態成員調用語法的區別

開發規范

static final修飾的變量名需全大寫(如NUM而非num)

命名習慣與實際語法約束的差異

final關鍵字的特性

被修飾變量為常量,禁止二次賦值

final與普通變量的初始化要求對比

6.接口特點和與抽象類的區別

知識點

核心內容

重點

接口特點

1. 可以多繼承(一個接口繼承多個接口);

2. 可以多實現(一個類實現多個接口);

3. 子類可同時繼承父類和實現接口

接口繼承 vs 類繼承; 類單繼承 vs 接口多繼承

接口實現注意事項

1. 多個接口抽象方法重名時只需重寫一次;

2. 多個接口默認方法重名時必須重寫

抽象方法沖突只需實現一次; 默認方法沖突強制重寫

接口與抽象類區別

相同點: - 都位于繼承體系頂端; - 都不能實例化; - 都包含抽象方法; 不同點: - 抽象類可包含成員變量/構造方法; - 接口側重功能集合

設計定位差異: 抽象類→父類擴展; 接口→功能契約

命名規范

實現類推薦使用Impl后綴(implements縮寫)

開發中通過命名快速識別實現類

代碼示例

interface A extends B,C; class Impl implements A,B; class Sub extends Parent implements A,B

多繼承語法糖寫法

7.多態

知識點

核心內容

重點

多態概念

面向對象三大特征之一,強調方法重寫和父類引用指向子類對象

不要從字面理解"一個事物多種形態",要從使用形式理解

多態前提條件

1. 必須有子父類繼承或接口實現關系;

2. 必須有方法重寫(無重寫則多態無意義)

成員變量在多態中無意義,重點關注重寫方法

多態實現方式

父類類型 變量名 = new 子類構造器();

類比基本數據類型轉換:double b = 10(大類型接收小類型)

與常規new對象方式(Dog d = new Dog())的語法區別

多態調用限制

不能直接調用子類特有功能;

只能調用重寫方法和父類定義的方法

與繼承中new父類對象不能調子類方法的規則一致

多態應用示例

Animal a = new Dog(); a.eat()調用的是Dog重寫方法; Animal a2 = new Cat(); a2.eat()調用Cat重寫方法

編譯看左邊,運行看右邊的調用機制

多態專業術語

英文術語:Polymorphic;

代碼特征:抽象類/接口+實現類重寫

需區分抽象類與接口的實現方式差異

多態實現:

public abstract class Animal {public abstract void eat();
}public class Dog extends Animal{@Overridepublic void eat() {System.out.println("狗啃骨頭");}//特有方法public void lookDoor(){System.out.println("狗會看門");}
}public class Cat extends Animal{@Overridepublic void eat() {System.out.println("貓吃魚");}//特有方法public void catchMouse(){System.out.println("貓會捉老鼠");}
}public class Test01 {public static void main(String[] args) {//原始方式Dog dog = new Dog();dog.eat();//重寫的dog.lookDoor();//特有的Cat cat = new Cat();cat.eat();//重寫的cat.catchMouse();//特有的System.out.println("==================");//多態形式new對象Animal animal = new Dog();//相當于double b = 10animal.eat();//重寫的 animal接收的是dog對象,所以調用的是dog中的eat
//      animal.lookDoor();   多態前提下,不能直接調用子類特有成員Animal animal1 = new Cat();animal1.eat();//cat重寫的}
}
8.多態_成員訪問特點

知識點

核心內容

重點

多態成員的訪問特點

成員變量訪問看等號左邊(編譯類型),成員方法調用看new的對象(運行類型)

成員變量無多態性(輸出1000),成員方法有多態性(輸出子類重寫方法)

繼承口訣應用

成員變量:看左邊(父類);成員方法:看new誰(子類優先)

易混淆變量與方法的訪問規則差異

多態本質

主要玩方法重寫,不涉及成員變量的多態性

實際開發中強調方法重寫的優先級

9.多態的優點

知識點

核心內容

重點

多態的定義與形式

父類引用指向子類對象(Animal a = new Dog()),通過父類類型調用子類重寫方法

多態與原始方式(Dog d = new Dog())的語法區別

多態的優缺點對比

優點:擴展性強(父類類型可接收任意子類對象);

缺點:無法直接調用子類特有成員

原始方式 vs 多態方式的調用權限差異(重寫/繼承/特有方法)

擴展性案例

方法形參定義為父類類型(void method(Animal a)),可傳遞不同子類對象(Dog/Cat),調用各自重寫方法

原始方式需為每個子類單獨定義方法(method(Dog d), method(Cat c))

多態的應用場景

框架開發、對象傳遞時優先使用多態,核心價值是統一調用重寫方法,而非調用子類特有功能

易混淆點:多態并非為調用特有功能設計

類型轉換與接收范圍

類比double b = 10(大類型接收小類型),多態中父類類型可接收所有子類對象

類型不匹配時的編譯錯誤(如Dog d = new Cat())

在開發實踐中:多態是許多設計模式的基礎;多數Java框架底層都使用多態機制

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

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

相關文章

華碩無畏Pro14 2025,打造舒適辦公新體驗

在快節奏、高效率的現代辦公環境中,一臺得心應手的筆記本無疑是每位職場人士的“第二大腦”與核心生產力工具。它不僅需要承載日常工作的繁雜事務,更要在關鍵時刻穩定輸出,助力我們從容應對各種挑戰。 洞悉此需求,華碩推出了全新…

重寫B站(網頁、后端、小程序)

1. 網頁端 1.1 框架 Vue ElementUI axios 1.2 框架搭建步驟 搭建Vue 1.3 配置文件 main.js import {createApp} from vue import ElementUi from element-plus import element-plus/dist/index.css; import axios from "axios"; import router from…

MySQL數據 在 磁盤上是什么樣子的

MySQL數據 在 磁盤上是什么樣子的,取決于所使用的存儲引擎。存儲于引擎 是作用在 表! 上的。 存儲引擎 百度百科是這樣定義存儲引擎的:MySQL 中的數據用各種不同的技術存儲在文件(或者內存)中,這些不同的技術以及配套…

MySQL的相關操作

目錄 一. 字符串函數 二. group by分組 2.1 作用 2.2 格式 2.3 舉例 三. order by排序 3.1 格式 3.2 舉例 四. limit 4.1 作用 4.2 舉例 五. having 5.1 作用 5.2 舉例 六. 正則表達式 七. 多表查詢 7.1 定義 7.2 子查詢 7.3 聯合查詢 縱向合并 7.4 交叉連…

網絡安全-等級保護(等保) 2-7-3 GB/T 25058—2019 第7章 安全設計與實施

############################################################################### 對于安全廠家而言,最關心的內容在本章節,根據已確定的安全總體方案,完成技術措施和管理措施的詳細設計和實施,包含具體的安全產品和管理要求。…

【Spring Boot】配置實戰指南:Properties與YML的深度對比與最佳實踐

目錄 1.前言 2.正文 2.1配置文件的格式 2.2properties 2.2.1基礎語法 2.2.2value讀取配置文件 2.2.3缺點 2.3yml 2.3.1基礎語法 2.3.2配置不同數據類型 2.3.3配置讀取 2.3.4配置對象和集合 2.3.5優缺點 2.4綜合練習:驗證碼案例 2.4.1分析需求 2.4.2…

20250519使用TF卡將NanoPi NEO core開發板刷機為Ubuntu core22.04.3系統完成之后執行poweroff自動關機

1、h3-sd-friendlycore-xenial-4.14-armhf-20210618.img.gz 在WIN10下使用7-ZIP解壓縮/ubuntu20.04下使用tar 2、Win32DiskImager.exe 寫如32GB的TF卡。【以管理員身份運行】 3、TF卡如果已經做過會有3個磁盤分區,可以使用SD Card Formatter/SDCardFormatterv5_WinE…

編譯Qt5.15.16并啟用pdf模塊

編譯Qt5.15.16并啟用pdf模塊 標題1.目錄設置 -q-bulid –qt-everywhere-src-5.15.16 –bulid cd bulid 必須,否則會提示Project ERROR: You cannot configure qt separately within a top-level build. create .qmake.stash and .qmake.super in build folder …

“智”斗秸稈焚燒,考拉悠然以科技之力筑牢生態安全防線

清晨,薄霧籠罩著遼闊的田野,農民們開始了一天的勞作。然而,隨著收割季的到來,秸稈焚燒問題也逐漸浮現,成為威脅空氣質量與生態安全的隱患。傳統監管方式往往顯得力不從心,效率低下的困境亟待突破。在此背景…

Nockchain項目部署教程

Nockchain頭礦窗口正在打開,不拼設備,現在部署,馬上就要開挖了。 一、項目介紹 Nockchain 是結合了POW和ZKVM的區塊鏈協議。 主要特點: 1)計算存儲新域名空間三位一體架構,高吞吐量 2)使用No…

2025年氣候持續大風,消納減少,如何保收益?東潤能源整體解決方案持續保收益保增長

引言 隨著全球氣候變化加劇,2025年極端天氣頻發,風資源豐富但電網消納能力不足的問題日益突出,導致許多風電項目面臨限電、收益下滑的挑戰。如何在復雜的氣候和電力市場環境下保障投資收益,成為行業關注的焦點。東潤能源憑借領先的技術創新和綜合能源解決方案,為風電行業…

2023河南CCPC省賽vp部分補題

A 模擬 暴力 對每個合法的前綴&#xff0c;判斷后綴是不是合法 int a[29]; void solve(){string s;cin>>s;int t-1;if(s.size()1){return cout<<"NaN"<<endl,void();}for(int i0;i<27;i) a[i]0;for(int i0;i<s.size();i){a[s[i]-a];if(…

【2025保姆級】Open-WebUI五大功能區首曝!第一篇:管理員面板深度拆解,手把手講解配置AI管理中樞

【2025保姆級】Open-WebUI五大功能區首曝&#xff01;第一篇&#xff1a;管理員面板深度拆解&#xff0c;手把手講解&配置AI管理中樞 一、引言二、用戶2.1 概述2.2 權限組 三、競技場評估四、函數五、設置5.1 通用5.1.1 身份驗證5.1.2 功能 5.2 外部連接5.2.1 OpenAI API5.…

docker上傳鏡像

向Docker Hub上傳鏡像&#xff0c;需要按照一定的步驟進行操作。 Docker Hub是Docker的官方鏡像倉庫&#xff0c;用戶可以在其中存儲、管理和部署Docker鏡像。要向Docker Hub上傳鏡像&#xff0c;請遵循以下步驟&#xff1a; 創建Docker Hub賬戶&#xff1a; 訪問Docker Hub官…

(十三)深入了解AVFoundation-采集:視頻幀采集與實時濾鏡處理

引言 在移動應用中&#xff0c;實時視頻處理已成為視頻拍攝、短視頻、直播、美顏相機等功能的核心技術之一。從簡單的濾鏡疊加&#xff0c;到復雜的美顏、AR 特效&#xff0c;背后都離不開對每一幀圖像的高效采集與處理。在前幾篇文章中&#xff0c;我們已經實現了基本的視頻采…

數字政務安全實戰:等保2.0框架下OA系統防護全解析

近期在Python基礎教學領域深入鉆研函數機制、數據結構優化等內容時&#xff0c;深刻意識到信息安全作為技術基石的戰略價值。在政務數字化轉型浪潮中&#xff0c;Python憑借其高擴展性與豐富的安全生態庫&#xff0c;成為構建政務OA系統安全防護體系的核心工具。本文將以等保2.…

Pytorch項目實戰-2:花卉分類

一、前言 在深度學習項目中&#xff0c;數據集的處理和模型的訓練、測試、預測是關鍵環節。本文將為小白詳細介紹從數據集搜集、清洗、劃分到模型訓練、測試、預測以及模型結構查看的全流程&#xff0c;附帶代碼和操作說明&#xff0c;讓你輕松上手&#xff01; 二、數據集 …

React Flow 邊事件處理實戰:鼠標事件、鍵盤操作及連接規則設置(附完整代碼)

本文為《React Agent&#xff1a;從零開始構建 AI 智能體》專欄系列文章。 專欄地址&#xff1a;https://blog.csdn.net/suiyingy/category_12933485.html。項目地址&#xff1a;https://gitee.com/fgai/react-agent&#xff08;含完整代碼示?例與實戰源&#xff09;。完整介紹…

java小結(一)

java&#xff08;上&#xff09; 模塊一 1.JDK,JRE,JVM 知識點 核心內容 易混淆點 JDK定義 Java Development Kit&#xff08;Java開發工具包&#xff09;&#xff0c;包含開發所需全部工具 JDK包含JRE的關系容易混淆 JRE定義 Java Runtime Environment&#xff08;Jav…

ddns-go安裝介紹-強大的ipv6動態域名解析神器-家庭云計算專家

ddns-go 是一款輕量級開源動態域名解析工具&#xff0c;專注于解決動態IP環境下的域名綁定問題&#xff0c;尤其適配IPv6網絡環境。其核心功能包括&#xff1a; 1.IPv6動態解析&#xff1a;自動檢測本地IPv6地址變化&#xff08;支持網卡、接口或命令獲取&#xff09;&#xf…