Java 設計模式 Day1 之面向抽象原則:抽象(abstract)類的設計與應用分析

文章目錄

  • 前言
  • 一、抽象(abstract)類的設計要點
  • 二、抽象類的應用實例
    • 2.1、創建一個抽象類
    • 2.2、創建抽象類非抽象子類
    • 2.3、通過上轉型對象調用子類方法
  • 總結


前言

面向抽象原則是面向對象四大基本原則的第一條,其重要性不言而喻,面向抽象原則分為抽象(abstract)類和接口(interface)以及面向抽象編程,由于篇幅有限本文我們主要細說抽象(abstract)類的設計與應用,并通過引入具體案例的形式使概念更便于理解。

在這里插入圖片描述


一、抽象(abstract)類的設計要點

  • 抽象類中可以有 abstract 方法,也可以有非 abstract 方法。
  • 抽象類不能用 new 運算符創建對象。
  • 抽象類的子類必須重寫父類的 abstract 方法,在子類中將 abstract 方法重新聲明,但必須去掉 abstract 修飾符,同時保證聲明的方法名字、返回類型、參數個數和類型與父類的 abstract 方法相同。
  • 抽象類創建的對象可以作為上轉型對象。抽象類雖然不能使用 new 運算符創建對象,但是由于非 abstract 子類必須重寫父類全部 abstract 方法,所以可以讓抽象類聲明的對象成為子類對象的上轉型對象,并可以調用子類重寫的方法。

二、抽象類的應用實例

2.1、創建一個抽象類

首先我們創建一個抽象類 A,里面有一個 abstract 方法 int add(int x,int y),相應代碼如下:

package com.bailu.principle;/** 面向抽象原則* 抽象類中可以有abstract方法,也可以有非abstract方法* 抽象類不能用new運算符創建對象*/
public abstract class A {public abstract int add(int x, int y);
}

2.2、創建抽象類非抽象子類

接著我們創建非抽象子類 B,繼承父類 A,并且重寫父類 A 中的 abstract 方法 int add(int x,int y),實現計算參數 x 與 y 的值,相應代碼如下:

package com.bailu.principle;/** 抽象類的子類必須重寫父類的abstract方法,在子類中將abstract方法重新聲明,但必須去掉abstract修飾符,* 同時要保證聲明的方法名字、返回類型、參數個數和類型與父類的abstract方法完全相同*/
public class B extends A {@Overridepublic int add(int x, int y) {return x + y;}}

2.3、通過上轉型對象調用子類方法

我們假設 b 是 B 創建的對象,那么根據規則就可以讓 A 類聲明的對象 a 成為對象 b 的上轉型對象,即讓 a 存放 b 的引用。也就可以調用子類中重寫的 int add(int x,int y) 方法,相應代碼如下:

package com.bailu.principle;/** 抽象類雖然不能用new運算符創建對象,但是可以通過非abstract子類重寫父類全部abstract方法* 這樣就可以讓抽象類聲明的對象成為其子類的上轉型對象,并調用子類重寫的方法*/
public class Application {public static void main(String[] args) {A a;a = new B();// a是B類對象的上轉型對象int m = a.add(1, 2);// a調用子類B重寫的方法System.out.println(m);}
}

運行結果具體如下圖所示:

在這里插入圖片描述


總結

在本文給大家介紹了面向抽象原則概念中的抽象(abstract)類內容,并總結了在開發中抽象類的設計要點,通過引入具體的案例的形式進一步分析,可能有些同學對于其中上轉型對象的概念比較突兀,在案例中具體分析之后也就容易掌握了。

在這里插入圖片描述


我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補充可以留言在文章下方,感謝大家的支持!

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

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

相關文章

數據中心 PUE 優化模型生成服務:AI 浪潮下的數據中心的省錢攻略,就用這幾招

文章目錄前言一、數據中心節能能省一大筆錢1.1、全聯接世界推動數據中心市場持續高速發展1.1.1、用戶聯接激增1.1.2、全球數據中心基礎設施高速發展1.2、數據中心的增長帶來超額的用電量1.3、數據中心節能是必然趨勢1.4、什么是 PUE?1.5、數據中心制冷原理1.6、傳統…

Eclipse 答疑:為什么 Eclipse 里面的鼠標光標變成了小黑方塊?什么原因導致的?

文章目錄前言一、問題產生場景二、問題原因分析2.1、問題直接誘因2.2、“Insert”按鍵作用分析2.2.1、插入(默認)狀態解釋及案例2.2.2、覆蓋狀態解釋及案例三、對應解決方式總結前言 今天有一個學妹問我:學長,我的 Eclipse 太變態…

Java 設計模式 Day2 之面向抽象原則:接口(interface)的設計應用與抽象類的區別

文章目錄前言一、接口(interface)的設計要點與抽象類的區別二、接口(interface)的應用實例2.1、創建一個接口(interface)2.2、創建實現接口的類2.3、通過接口回調調用被類實現的方法總結前言 面向抽象原則是…

Java 設計模式 Day3 之面向抽象原則:什么是面向抽象編程?面向抽象編程如何應用?

文章目錄前言一、什么是面向抽象編程?二、傳統場景的類設計2.1、項目場景設計2.2、傳統類設計存在的問題三、采用面向抽象編程的類設計3.1、設計一個抽象類/接口3.2、采用上轉型對象/接口回調調用子類方法3.3、重新設計子類/被實現類3.4、面向抽象編程的具體實現四、…

贏在 CSDN:我在 CSDN 的成長,“長風破浪會有時”,如何保證自己有持續寫作的動力?

文章目錄前言一、如何結緣 CSDN?1.1、我的“黑客之路”初探1.2、CSDN 一眼看得到的優勢是什么?1.3、大學再遇 CSDN二、為什么開始在 C 站輸出內容?2.1、“好記性不如爛筆頭”2.2、記事本到“鼓勵工具”三、C 站吸引我的地方是什么?3.1、海量…

華為工業云平臺:制造業企業數據平臺建設最佳實踐分享

文章目錄前言一、制造行業數字化轉型和發展趨勢1.1、制造行業數字化轉型發展趨勢1.2、制造行業數字化轉型遇到的挑戰1.3、政策牽引,加快數字化轉型升級二、數字化轉型-業務角度2.1、智能生產2.2、智能銷售2.3、智能物流2.4、智能供應鏈2.5、智慧決策三、數字化轉型-…

計算機本科畢業設計:畢業設計、論文要點及我們面對畢業答辯應持有的態度

文章目錄前言一、對于畢業設計1.1、選題1.2、中期自查1.3、畢業設計答辯二、對于畢業論文三、我們應持有的態度3.1、人盡其才3.2、恪盡職守3.3、全力以赴3.4、做好自己總結前言 最近不斷有很多學弟、學妹來找我咨詢一些關于畢設、論文答辯的問題,一看日歷四月份了&a…

Eclipse 答疑:Eclipse 使用 Amateras UML 創建類圖點擊 Finish 沒反應解決方式匯總

文章目錄前言一、問題產生場景1.1、Amateras UML 創建類圖沒反應二、問題原因分析三、問題定位及解決3.1、定位檢查版本支持信息3.2、問題確認過程3.3、解決方式驗證四、不想降低版本怎么辦?總結前言 之前項目中在 Eclipse 使用 Amateras UML 創建類圖點擊 Finish 沒…

DDoS 攻擊與防護(二):DDoS 防護購買和使用入門指南,DDoS 防護服務有哪些應用場景?

文章目錄前言一、如何選擇 DDoS 高防和 DDoS 原生高級防護?二、如何購買和使用 DDoS 高防?2.1、購買 DDoS 高防2.2、DDoS 高防域名網站類業務接入流程2.3、配置防護域名2.4、上傳證書2.5、選擇實例和線路2.6、本地驗證2.7、修改 DNS 解析2.8、放行高防回…

Java 大廠面試必刷題 Day1:何為面向對象編程的思想?面向對象三大特征是什么?

文章目錄 前言一、何為面向對象編程的思想?二、面向對象的三大特征2.1、封裝關系2.2、繼承關系2.3、多態關系總結前言 從本文我們將開始《Java 大廠面試必刷題》系列的更新,Java 面試必刷題 Day1:何為面向對象編程的思想?面向對象三大特征是什么?這道題對于 Java 從業者來…

猿創征文|2022 互聯網從業心得:“但愿人長久,千里共嬋娟”,中秋先學會與自己內心團圓

文章目錄前言一、“好雨知時節,當春乃發生”1.1、《性格修正:如何突破你的原生性格》1.2、“疼我孰知父母”1.3、“海內存知己,天涯若比鄰”二、“讀萬卷書,行萬里路”2.1、“讀萬卷書”2.2、“行萬里路”三、“身體是革命的本錢”…

猿創征文|彈性云服務器 ECS:輕松上云第一步,如何根據應用場景購買和使用入門 ECS?

文章目錄前言一、什么是彈性云服務器?1.1、ECS 介紹1.2、為什么選擇 ECS?1.3、ECS 產品架構1.4、ECS 產品優勢二、彈性云服務器的實例類型三、彈性云服務器的購買3.1、基礎配置3.1.1、計費模式3.1.2、區域3.1.3、可用區3.1.4、CPU 架構3.1.5、規格3.1.6、…

猿創征文|不會代碼也能玩開發?基于華為云 IoT 快速實現 0 代碼體驗物聯網設備上云

文章目錄前言一、物聯網設備上云背景介紹二、實驗環境準備三、智慧煙感器上云體驗3.1、選擇向導式極速體驗3.2、對智慧煙感器進行產品定義3.3、定義目標設備標識碼、注冊設備3.4、根據需要選擇設備演示包3.5、下載、解壓設備演示包3.6、執行 bat 文件,運行設備演示包…

猿創征文|基于 AppCube 應用魔方:零代碼手把手教你 5 分鐘開發微信小程序

文章目錄前言一、AppCube 應用魔方1.1、什么是 AppCube 應用魔方?1.2、為什么選擇AppCube 應用魔方?二、項目實驗環境與資源準備2.1、實驗需求及環境介紹2.2、初次訂購 AppCube2.3、曾訂購過 AppCube三、進入 AppCube 全新零代碼界面四、配置業務用戶信息…

《軟件質量保證與測試》第 6 章——系統測試 重點部分總結

文章目錄 前言一、判斷題二、簡答題總結前言 軟件質量保證是建立一套有計劃,有系統的方法,來向管理層保證擬定出的標準、步驟、實踐和方法能夠正確地被所有項目所采用。軟件測試是使用人工或自動的手段來運行或測定某個軟件系統的過程,其目的在于檢驗它是否滿足規定的需求或…

《軟件質量保證與測試》第 9 章——測試自動化及其框架 重點部分總結

文章目錄 前言一、判斷題二、簡答題總結前言 軟件質量保證是建立一套有計劃,有系統的方法,來向管理層保證擬定出的標準、步驟、實踐和方法能夠正確地被所有項目所采用。軟件測試是使用人工或自動的手段來運行或測定某個軟件系統的過程,其目的在于檢驗它是否滿足規定的需求或…

一個長方體玻璃容器從里面量長寬_養觀賞魚用玻璃魚缸嗎?3種常見養魚容器,另外2種養魚效果不差...

養魚需要容器,不過我們常見的容器主要還是玻璃缸,長方形的玻璃缸。不過其實從玻璃缸這方面繼續延伸下去,還有一些熱彎,負壓,異形等等的魚缸款式,這樣說起來就比較多了。不過養魚的容器是僅僅限于玻璃類容器…

java中間件是什么意思_數據庫中間件漫談

1.前言隨著業務的發展,MySQL數據庫中的表會越來越多,表中的數據量也會越來越大,相應地,數據操作的開銷也會越來越大;另外,無論怎樣升級硬件資源,單臺服務器的資源(CPU、磁盤、內存、…

kafka多個消費者消費一個topic_kafka:一文讀懂消費者背后的那點quot;貓膩quot;

來自:z小趙前言經過前幾篇文章的介紹,大致了解了生產者背后的運行原理。消息有生產就得有人去消費,今天我們就來介紹下消費端消費消息背后發生的那點事兒。文章概覽消費者與消費組的“父子關系”。Repartition 觸發時機。消費者與 ZK 的關系。…

MySQL 入門教程:初學者一學就會,零基礎 MySQL 安裝及增刪改查入門

文章目錄前言一、MySQL 的相關概念介紹二、Windows 下 MySQL 的配置2.1、MySQL 安裝配置步驟2.2、MySQL 服務的啟動、停止與卸載三、MySQL 腳本的基本組成四、MySQL 中的數據類型4.1、數字類型4.2、日期和時間4.3、字符串類型五、使用 MySQL 數據庫5.1、登錄到 MySQL5.2、創建一…