允許使用抽象類類型 isearchboxinfo 的對象_Java學習5-設計模式+抽象類/方法

05c648577695feaa24e94daddb8d87db.png

1.設計模式

設計模式:一套被反復使用、多數人知曉的,經過分類編目的、代碼設計經驗的總結,是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。

  1. 項目中合理的運用設計模式可以完美的解決很多問題;
  2. 每種模式在現實中都有相應的原理來與之對應;
  3. 每一個模式描述了一個在我們周圍不斷重復發生的問題,以及該問題的核心解決方案。

23種基礎模式

單例模式

要點:

  1. 某個類只能有一個實例;
  2. 必須自行創建實例;
  3. 必須自行向整個系統提供這個實例

實現:

  1. 只提供私有的構造方法;
  2. 含有一個該類的靜態私有對象;
  3. 提供一個靜態的公有方法用于創建、獲取靜態私有對象。

餓漢式:在創建類的同時實例化對象,以空間(內存中存在周期長)換時間(類加載比較快),線程比較安全

package com.imooc.singletonProj;
/*** 餓漢式:創建對象實例的時候直接初始化*/
public class SingletonOne {//1.私有構造方法private SingletonOne(){}//2.該類型私有靜態實例private static SingletonOne instance =new SingletonOne();//3.靜態共有方法用于創建、獲取靜態私有對象public static SingletonOne getInstance(){return instance;}
}

懶漢式:懶漢式:不直接創建靜態實例,而是在使用的時候調用靜態getter方法完成初始化,用時間換空間,存在線程風險

package com.imooc.singletonProj;
public class SingletonTwo {//1.私有構造方法private SingletonTwo(){}//2.該類型私有靜態實例private static SingletonTwo instance=null;//3.創建開放的靜態方法提供實例對象public static SingletonTwo getInstance(){if(instance==null)instance=new SingletonTwo();return instance;}
}

單例模式的優點:

  • 在內存中只有一個對象,節省內存空間;
  • 避免頻繁創建銷毀對象,提高性能;
  • 避免對共享資源的多重占用

單例模式的缺點:

  • 擴展困難;
  • 如果實例化后的對象長期不利用,系統將默認為垃圾進行回收,造成對象狀態丟失

使用場景:

  1. 創建對象時占用資源過多,但同時又需要用到這類對象;
  2. 對系統內資源要求統一讀寫,如讀寫配置信息;
  3. 當多個實例存在可能引起程序邏輯錯誤,如號碼生成器。

說實話,以上的內容不是太懂,可能學的還是不夠深入

2.抽象(類、方法)

2.1 抽象類

如同之前的繼承中的例子,父類Animal可以進行實例化,并執行吃的行為

Animal pet=new Animal("花花",2)
pet.eat()

程序運行沒有問題,但是實際邏輯上應該是其子類(Cat or Dog)來執行對應的動物各自特殊的 吃的行為,因此使用 abstract 不允許實例化父類來避免寫出上述沒有意義的代碼。防止父類和無意義實例化和子類設計的隨意性,父類就是個 工具類(工具人)

抽象類應用場景:某個父類只是知道其子類應該包含怎樣的方法,但無法準確知道這些子類如何實現這些方法。

2.2 抽象方法

父類中的方法被子類重寫,因此父類的方法沒有用,需要用 abstract 修飾方法,稱之為 抽象方法,且沒有方法體。使其無法調用,并且要求子類重寫方法。否則,子類也需要成為抽象類才不用重寫。

抽象類和抽象方法的存在是提醒編寫者需要重寫父類有,但是需要子類的重寫的方法。

使用規則:

  1. abstract定義抽象類;
  2. 抽象類不能直接實例化,只能被繼
  3. 承,可以通過向上轉型完成對象實例化
  4. 包含抽象方法的必須是抽象類,但是抽象類可以沒有抽象方法;
  5. static final private 與abstract無法共存;
  6. 可以定義一個抽象類的對象變量,但是只能引用非抽象子類的對象,即向上轉型

Person p = new Strudent()

2.3 總結

抽象類禁止了父類被無效的實例化,而抽象方法則要求子類繼承后必須重寫(除非子類也是abstract),一代一代傳下去,誰真正繼承,誰重寫。

只有抽象方法才需要重寫,抽象類中的非抽象方法不需要重寫,這是抽象類與接口的不同的其中一點

抽象類將 設計實現 相分開,誰繼承,誰再具體實現,這就是抽象類存在的意義。

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

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

相關文章

初始Windows程序

1.屬性 窗體標題 Name 窗體的圖標 Icon 背景圖片 BackgroundImage 背景顏色 BackColor 最大化按鈕 MaxIMonBox 最小化按鈕 Minimun 窗體邊框樣式 FormBorderStyle 窗體初始位置 StartPosition 窗體狀態 WindowsState 背景圖片拉伸 BackgroundImageLayout 窗體標題 Te…

計算機病毒是以獨立的文件形式存在的對嗎,計算機病毒以什么形式存在?

自從2113世紀出現第一種病毒以來,對于世界上共有5261種病毒的疾病數量有不同的看法. 無論有1,653種,病毒的數量仍在增加. 根據國外統計,計算機病毒以每周10種的速度增長. 根據我國部的統計,中國計算機病毒以每月4種的速度增長. 有…

HTML基礎實例

本節列舉了一些簡單的HTML例子&#xff0c;幫助大家更感性地認識HTML標簽。是不是對一些標簽還不熟悉&#xff1f;別擔心&#xff0c;后面幾個章節會有詳細說明&#xff0c;先跑幾個例子看看效果吧。 HTML文檔相關標簽所有HTML文檔必須以<!DOCTYPE html>聲明開頭。 HTM…

簽署Java代碼

在上一篇文章中&#xff0c;我們討論了如何保護移動代碼 。 提到的措施之一是簽名代碼。 這篇文章探討了Java程序如何工作。 數字簽名 數字簽名的基礎是密碼學 &#xff0c;特別是公鑰密碼學 。 我們使用一組加密密鑰&#xff1a;私有密鑰和公共密鑰。 私鑰用于簽名文件&am…

蜘蛛搜索引擎_SEO:搜索引擎蜘蛛要引導,不能佛系優化

又是一個不眠的夜晚&#xff0c;工作對生活節奏不斷地敲打&#xff0c;我們新一代的年輕小伙不得不進步&#xff0c;滿懷熱情來挑戰我們對于工作的激情&#xff0c;雖然每一天工作都是重復地進行&#xff0c;但是每一天都有我們留下的痕跡&#xff0c;為世界的美好增添一道絢麗…

SQL數據庫排序規則修改

修改SQL數據庫排序規則: 1.修改為單用戶模式 2.然后關閉所有的查詢窗口&#xff0c;修改Options的Collocation屬性&#xff0c;如&#xff1a;Chinese_PRC_90_CI_AS 3.再修改為多用戶模式 例如&#xff1a; ALTER DATABASE SRMain SET SINGLE_USER WITH ROLLBACK IMMEDIATE Go…

屬于計算機病毒主要特征的是,[單選] 不屬于計算機病毒的主要特征的是()

[單選] 不屬于計算機病毒的主要特征的是()更多相關問題已知兩直線l1&#xff1a;mx&#xff0b;y&#xff0d;20和l2&#xff1a;(m&#xff0b;2)x&#xff0b;y&#xff0b;40與兩坐標軸圍成的四邊形有外接圓&#xff0c;則實數m的值為()A&#xff0e;1B&#xff0e;&#xf…

小程序滴滴車主板塊的銀行卡管理左滑刪除編輯

最近在類似于滴滴軟件的一款小程序&#xff0c;工程確實有點大&#xff0c;很多東西都是第一次做。這次記錄一下關于左滑刪除的一個代碼記錄。主要的思想就是計算滑動距離的大小來使用css中的 transition 控制滑動的效果&#xff0c;主流的都是控制邊距margin來達到左滑的效果。…

華菱重卡儀表指示說明_儀表裝置11種常見故障的解決方法

1. 轉速表工作不正常或停止工作首先檢查轉速表背面的黑色3孔插頭與插座接觸是否良好及電壓正常與否。3個端子的連接情況&#xff1a;端子a是電源負極&#xff0c;與儀表盤14孔白色插座上的棕色導線連接后搭鐵(儀表盤上所有搭鐵點均由棕色導線匯集在一起&#xff0c;并通過膠布包…

WADL中的JSON模式

在其他工作之間&#xff0c;我最近一直在審查WADL規范&#xff0c;以解決一些文檔問題&#xff0c;以生成更新版本。 因為顯而易見的一件事是缺少對XML以外的語言的語法支持-是的&#xff0c;您可以使用JSON <-> XML Schema的映射&#xff0c;但這對于JSON純粹主義者而言…

怎么用python自制計算公式_如何使用Python和Numpy計算r平方?

我最初發布下面的基準是為了推薦numpy.corrcoef&#xff0c;愚蠢地沒有意識到原來的問題已經使用了corrcoef&#xff0c;實際上是在詢問高階多項式擬合。我已經使用statsmodels為多項式r-squared問題添加了一個實際的解決方案&#xff0c;并且我已經離開了原始的基準測試&#…

ASP .NET SVN emmet 插件

學習 ASP .NET 時間的第三周&#xff1a; 來講講如何在 visual studio 2013...上搭載 SVN吧: 廢話不多說&#xff1a; One Step&#xff1a; 電腦上已安裝 visual studio 2013 等版本&#xff08;未安裝時 紅色區域是不存在的&#xff09; Two Step&#xff1a; 從官網上下載對…

Python之路3【知識點】白話Python編碼和文件操作(截載)

無意發現這篇文章講的比較好&#xff0c;存下來供參考&#xff1a; http://www.cnblogs.com/luotianshuai/p/5735051.html轉載于:https://www.cnblogs.com/shikaihong/p/7778880.html

Http協議入門

[在此處輸入文章標題] 1 web web入門 1&#xff09;web服務軟件作用: 把本地資源共享給外部訪問 2&#xff09;tomcat服務器基本操作 &#xff1a; 啟動: %tomcat%/bin/startup.bat 關閉&#xff1a; %tomcat%/bin/shutdown.bat 訪問tomcat主頁&#xff1a; http://loca…

計算機硬件系統都是看得見的,計算機組成硬件系統).doc

計算機組成硬件系統)各位計算機協會的成員大家好&#xff0c;很高興大家能陪我們走過這段難忘的時光。為了讓大家更好的學到東西&#xff0c;我們特地將計算機方面的東西整理成技術文檔&#xff0c;共大家使用&#xff0c;祝大家學得愉快&#xff01;湘信院計算機協會一&#x…

Google Guava –期貨

這篇文章是我在Google Guava上的系列文章的延續&#xff0c;這次涵蓋了Future。 Futures類是用于使用Future / ListenableFuture接口的靜態實用程序方法的集合。 Future是提交給ExecutorService的異步任務&#xff08;可運行或可調用&#xff09;的句柄。 Future界面提供以下方…

iptables 配置后連接不上數據庫_Linux服務器配置-VSFTP服務配置(三)

上文&#xff1a;Linux服務器配置-VSFTP服務配置(二)一、vsftpd服務防火墻配置1、主動(POST)模式 FTP 防火墻配置CentOS6 系統 iptables 的配置iptables -t filter --line-number -nL INPUT#顯示現有防火墻規則&#xff0c;查看是否開啟20、21號端口。iptables -t filter -I IN…

下標索引必須為正整數類型或邏輯類型_Python3 基本數據類型

Python中的變量不需要聲明。每個變量在使用前都必須賦值&#xff0c;變量賦值以后該變量才會被創建。在Python中&#xff0c;變量就是變量&#xff0c;它沒有類型&#xff0c;我們所說的"類型"是變量所指的內存中對象的類型。Python 3中有六個標準的數據類型&#xf…

noip模擬賽 寫代碼

分析&#xff1a;這其實就是括號匹配題&#xff0c;一眼貪心題&#xff0c;不過一開始貪錯了&#xff0c;以為([)]是合法的......其實括號之間不能嵌套. 一開始的想法是盡量往左邊填左括號&#xff0c;因為每種括號的數量都確定了&#xff0c;那么左括號和右括號的數量也就確定…

[CF797C] Minimal string(貪心,棧)

題目鏈接&#xff1a;http://codeforces.com/contest/797/problem/C 題意&#xff1a;給個字符串&#xff0c;求字典序最小的出棧順序。 一開始想用優先隊列記錄全局最小的字符&#xff0c;然后每次入棧的時候檢查當前字符是不是最小的&#xff0c;如果是那么同時pop。這樣做的…