日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

允许使用抽象类类型 isearchboxinfo 的对象_Java学习5-设计模式+抽象类/方法

發布時間:2023/12/1 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 允许使用抽象类类型 isearchboxinfo 的对象_Java学习5-设计模式+抽象类/方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.設計模式

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

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

    單例模式

    要點:

  • 某個類只能有一個實例;
  • 必須自行創建實例;
  • 必須自行向整個系統提供這個實例
  • 實現:

  • 只提供私有的構造方法;
  • 含有一個該類的靜態私有對象;
  • 提供一個靜態的公有方法用于創建、獲取靜態私有對象。
  • 餓漢式:在創建類的同時實例化對象,以空間(內存中存在周期長)換時間(類加載比較快),線程比較安全

    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;} }

    單例模式的優點:

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

    單例模式的缺點:

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

    使用場景:

  • 創建對象時占用資源過多,但同時又需要用到這類對象;
  • 對系統內資源要求統一讀寫,如讀寫配置信息;
  • 當多個實例存在可能引起程序邏輯錯誤,如號碼生成器。
  • 說實話,以上的內容不是太懂,可能學的還是不夠深入

    2.抽象(類、方法)

    2.1 抽象類

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

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

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

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

    2.2 抽象方法

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

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

    使用規則:

  • abstract定義抽象類;
  • 抽象類不能直接實例化,只能被繼
  • 承,可以通過向上轉型完成對象實例化
  • 包含抽象方法的必須是抽象類,但是抽象類可以沒有抽象方法;
  • static final private 與abstract無法共存;
  • 可以定義一個抽象類的對象變量,但是只能引用非抽象子類的對象,即向上轉型
  • Person p = new Strudent()

    2.3 總結

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

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

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

    總結

    以上是生活随笔為你收集整理的允许使用抽象类类型 isearchboxinfo 的对象_Java学习5-设计模式+抽象类/方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。