java 入門如何設計類

来源:https://www.cnblogs.com/TreasureBoy-blog/archive/2019/12/24/12091938.html
-Advertisement-
Play Games

2019/12/24 | 在校大二上學期 | 太原科技大學 初學java後,我們會發現java難點不在於Java語法難學,而是把我們掛在瞭如何設計類的“弔繩”上了。這恰恰也是小白與入職多年的程式員的的差距之一。所以今天來分享一下我的觀點: 那麼如何設計類呢?有沒有遵循的原則可言呢?答案呢,就是下麵的 ...


         2019/12/24   |    在校大二上學期    |    太原科技大學

        初學java後,我們會發現java難點不在於Java語法難學,而是把我們掛在瞭如何設計類的“弔繩”上了。這恰恰也是小白與入職多年的程式員的的差距之一。所以今天來分享一下我的觀點:

     那麼如何設計類呢?有沒有遵循的原則可言呢?答案呢,就是下麵的敘述!

    面試官:“請你用C++/java/Python等語言以面向對象的方式,設計一個在console上運行的計算器。”

    面試者埋頭10分鐘,寫出了實現計算器功能的程式。 這裡呢,程式就不往上弄了。但是小鳥寫的程式大概是這樣子的:一個class、一個main方法和一連串的代碼,從頭到尾就有一個類和一個主方法。但是這不利於後期運維,並且可拓展性很差。

    所以,分"類"設計實現功能分裝變得尤為重要。設計思路如下:

   計算器最基本的功能為 :+ - * / 。可以將加減乘除分別寫一個類,都去繼承Operation類(父類)。那麼如何給用戶一個給好的操作方法呢?那麼就得在設計一個類(OperationCompany類)。而這個類比較特殊,主要負責用戶輸入什麼運算,就new 什麼對象。 什麼意思呢? 比如說,用戶想實現乘法這個運算,那麼在用戶輸入乘號*後,這個類的方法就會以乘法類為模板,new一個乘法類對象出來,從而去調用乘法的類方法。這種模式叫做簡單工廠原則。

    其中,加減乘除分開設計就體現了封裝這一特性,而Operation(父類)的子類(加減乘除)就體現了子類的多態性。俗稱“一龍生九子,九子各不同”,正是這個道理;而子類繼承父類Operation類是繼承所在。所以在編程中邊品邊思考,才會信手拈來高質量的代碼行。

 

 

轉載註明出處:  https://www.cnblogs.com/TreasureBoy-blog/

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • var map = {}; map['key1']=value1; map['key2']=value2; map['key3']=value3; map['key4']=value4; map['key5']=value5; 問題解決! ...
  • 對於CSS的white space屬性,我想大部分人應該和我差不多,最常用的就是nowrap屬性,最多用來做超長省略號顯示的時候會用到【hiahiahia~】 起因是這樣的:產品doggie策划了一個元旦活動,活動主頁最下邊需要顯示配置的活動規則,註意,是配置的活動規則,所以,免不了運營小妹要在後臺 ...
  • 為什麼我們要學習Node.js? 1. 認為: Node.js就學習一周,時間比較短,不重要 將來工作我後端又不用Node.js做,我們又java/python/php/c,為什麼要在意它 Node.js接下來項目中又不用,不用好好學,不用在意 2. 重要性? Node.js可以說是對js功能的擴展 ...
  • 1 <input type="date" id="date_info" placeholder="請輸入時間"/> 2 3 ...... 4 5 <script> 6 $(document).ready(function () { 7 var time = new Date(); 8 var day ...
  • 1.側邊欄划出一個信息框 通常滑鼠浮動側邊欄都會划出一個信息框,每個信息框距離側邊欄的距離是相等的,所以處理此問題的方法就是 量取信息框距離側邊欄的距離,信息框設置絕對定位,父元素設置相對定位之後,信息框就會相對於父元素的相對定位進行絕對定位,取父元素的width:100%,然後加上距離信息框距離側 ...
  • 對於更簡單的Ajax調用,XMLHttpRequest是低級別的,更複雜的,並且你需要封裝函數。不幸的是,一旦你開始考慮超時,中止調用和錯誤捕獲的複雜性,Fetch也會如此。 ...
  • 首先用一個例子指出來constructor存在形式。 由上面的代碼我們總結出結論1:上面的代碼在控制台可以看出constructor是指向構造器Fruit的引用。 這個地方就有點奇怪了。這個constructor到底指向的是那個實例的構造器? 根據上面的代碼總結出結論2:constructor指向的 ...
  • 導讀 篇幅較長,乾貨十足,閱讀需要花點時間,全部手打出來的字,難免出現錯別字,敬請諒解。珍惜原創,轉載請註明出處,謝謝~! NoSql介紹與Redis介紹 什麼是Redis? Redis是用C語言開發的一個開源的高性能鍵值對(key-value)記憶體資料庫。 它提供五種數據類型來存儲值:字元串類型、 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...