Java編程思想總結(一)對象導論

来源:https://www.cnblogs.com/xiaohang123/archive/2019/12/05/11992747.html
-Advertisement-
Play Games

Java編程思想總結(一)對象導論 1.1 抽象過程 萬物皆對象。 程式是對象的集合(即:類),他們通過發送消息(調用方法)來告知彼此要做的。 每個對象都有自己的由其他對象所構成的存儲(引用其他對象或基本類型,即組合)。 每個對象都擁有其類型。每個類最重要的區別於其他類的特征就是“可以發送什麼樣的消 ...


Java編程思想總結(一)對象導論

1.1 抽象過程

  • 萬物皆對象。
  • 程式是對象的集合(即:),他們通過發送消息(調用方法)來告知彼此要做的。
  • 每個對象都有自己的由其他對象所構成的存儲(引用其他對象或基本類型,即組合)。
  • 每個對象都擁有其類型。每個類最重要的區別於其他類的特征就是“可以發送什麼樣的消息給它”(即調用方法)。
  • 某一特定類型的所有對象都可以接受同樣的消息。
  • 對象具有狀態(成員屬性)、行為(成員方法)和標識(引用的名稱)。每個對象在記憶體中都有唯一的一個地址

 

1.2 每個對象都有一個介面

  • 在程式執行期間具有不同的狀態而其他方面都相似的對象會被分組到對象的類中。
  • 每個對象都屬於定義了特性和行為的某個特定的類。
  • 類描述了具有相同特性(數據元素)和行為(功能)的對象集合,所以可以把類當成是一個數據類型,例如所有浮點型數字具有相同的特性和行為集合。二者的差異在於,程式員通過定義類來適應問題,而不再被迫只能使用現有的用來表示機器中的存儲單元的數據類型。
  • 每個對象都只能滿足某些請求,這些請求有對象的介面所定義,決定介面的便是類型(即對象能夠調用什麼方法
  • 向某個對象“發送消息”(產生請求),這個對象便知道此消息的目的,然後執行對應的程式代碼。
  • 為了向對象發送消息,需要聲明對象的名稱,然後以圓點符號連接一個消息請求

 

1.3 每個對象都提供服務

  • 當正在試圖開發或理解一個程式設計時,最好的方法之一就是將對象想象為“服務提供者”,程式本身想用戶提供服務,它將通過調用其他對象提供的服務來實現這一目的。
  • 將對象看做都是服務提供者還有一個附帶的好處:它有助於提高對象的內聚性(內聚和耦合是密切相關的,同其他模塊存在高耦合的模塊意味著低內聚,而高內聚的模塊意味著該模塊同其他模塊之間是低耦合。在進行軟體設計時,應力爭做到高內聚,低耦合
  • 每個對象都有一個它所能提供服務的內聚的集合。在良好的面向對象設計中,每個對象都可以很好的完成這項任務,但是它並不試圖做更多的事情。

1.4 被隱藏的具體實現

  • 將程式開發人員按照角色分為類創建者(那些創建新數據類型的程式員)和客戶程式員(那些在其應用中使用數據類型的程式員)是大有裨益的。客戶端程式員的目標是手機各種用來實現快速開發應用的類。類創建者的目標是構建類,這種類只想客戶端程式員暴露必需的部分,而隱藏其他部分
  • 訪問控制的一個存在原因就是讓客戶端程式員無法觸及他們不應該觸及的部分——這部分對於數據類型的內部操作是必須的,但並不是用戶解決問題所需的介面的一部分
  • 訪問控制第二個存在原因是允許庫設計者可以改變內部的工作方式而不用擔心會影響到客戶端程式員

1.5 復用具體實現

  • 最簡單的復用某個類的方式就是直接使用該類的一個對象,還可以將哪個類的一個對象置於某個新的類中。我們稱其為“創建一個成員對象”。新的類可以由任意數量,任意類型的其他對象以任意可以實現新的類中想要的功能的方式所組成。因為是以現有的類合成新的類,所以稱為組合
  • 組合帶來了極大的靈活性。新類的成員對象通常被聲明為private,使得使用新類的客戶端程式員不能訪問他們。這也使得你可以在不幹擾現有客戶端代碼的情況下,修改這些成員。也可以在運行時修改這些對象,以實現動態修改程式的行為。

1.6 繼承

  • 在創建了一個類後,及時另一個類與其具有相似的功能,你還是得重新創建一個新類。如果我們能夠以現有類為基礎,複製它,然後通過添加個修改這個副本來創建新類就要好多了。通過繼承便可以達到這樣的效果。
  • 一個基類型包含其所有導出類型所共用的特性和行為。可以創建一個基類型來表示某些對象的核心概念,從基類型來導出其他類型,來表示此核心可以被實現的各種不同方式。
  • 當繼承現有類型時,也就創造了新的類型。這個新的類型不僅包括現有類型的所有成員(儘管private成員被隱藏了起來,並且不可訪問)。PS:所有private屬性和方法都能被繼承
  • 有兩種方法可以使基類與導出類差生差異:一是直接再導出類中添加新方法;二是改變現有基類方法的行為,也是最重要的方法,稱為覆蓋                 
  • 繼承只覆蓋基類的方法(而並不添加在基類中沒有的新方法),導出類和基類有完全相同的介面,導出類可以完全被替代為一個基類對象(導出類對象和基類對象可以調用的方法是一樣的)。
  • 有時必須在導出類型中添加新的介面元素,這樣也就擴展了介面。這個新的類型仍然可以替代基類,但是這種替換並不完美(父類引用指向子類對象,則子類對象只能調用父類中已有的方法)。

 

1.7 伴隨多態的可互換對象

  • 編譯器不可能產生傳統意義上的函數調用,一個非面向對象編程的編譯器產生的函數調用會引起所謂的前期綁定(即在編譯期間就確定了運行時將調用哪段代碼
  • 當向對象發送消息時,被調用的代碼直到運行時才能確定。編譯器確保被調用的方法的存在,並對調用參數和返回值執行類型檢查(無法提供此類保證的語言被稱為是弱類型的),但是還不知道將被執行的確切代碼。

1.8 單根繼承結構

  • 所有類都繼承於頂級父類Object

1.9 容器

  • 一種對象類型,這種對象類型持有其他對象的引用,稱為容器(也稱為集合),可以再運行期間動態的改變容量大小
  • 不同類型的容器提供了個不同的介面和外部行為。
  • 不同的容器由於底層結構的不同,對某些操作具有不同的效率(如ArrayList和LinkedList)。
  • 根據不同的情況選擇不同的容器,如在一開始使用LinkedList構建程式,而在優化系統性能時改用ArrayList。介面List所帶來的抽象,把在容器之間進行轉換時對代碼產生的影響降到最小限度。
  • 參數化機制(即泛型),可以自動定製作用於特定類型上的類,避免向上向下轉型帶來的資源消耗和安全性問題。

1.10 對象的創建和生命周期

 

  • java只允許在堆上創建對象(通過new關鍵字),並且有垃圾回收器以守護線程的方式在適當的時候自動清理不再被使用的對象。

1.11 異常處理:處理錯誤

  • 異常提供了一種從錯誤情況進行可靠恢復的途徑,現在不再是只能退出程式,你可以經常進行校正,並恢復程式的執行,這些都有助於編寫出更健壯的程式。

1.12 併發編程

  • 程式能夠停下正在做的工作,轉而處理某個其他問題。
  • 有時中斷對於處理時間性強的任務是必須的,但是對於大量的其他問題,我們只是想把問題分割成多個可獨立運行的部分(任務),從而提高程式的響應能力。這些彼此獨立運行的部分稱之為線程,上述概念被稱為“併發”。
  • 多線程帶來的便利之一是程式員不再關心機器上是由多個處理器還是一個處理器。
  • 某個任務鎖定某項資源,完成其任務,然後釋放資源鎖,使其他任務可以使用這項資源,防止多個線程同時訪問同一個資源時帶來的線程安全問題

1.13 Java與internet

  • 此處省略一萬字。。。

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 慕課網 實戰班 就業班 2019年12月5號 更新資料整理 300套 百度網盤資料鏈接: 鏈接:https://pan.baidu.com/s/1qORPsgM6ukDPOSjU5ck5yA提取碼:qnlu複製這段內容後打開百度網盤手機App,操作更方便哦 微雲鏈接: https://docs.qq ...
  • 從 2004 年發佈 1.0 版本開始,Spring 目前已經演進至 5.x 版本了,為不同時期的應用開發提供了強有力的支撐。現在我們正面對微服務、DevOps、雲計算這些新的挑戰,Spring 家族的新生力量 Spring Cloud 又將給我們提供哪些方面的支撐呢? ...
  • Spring Cloud,它將幫我們填平橫跨在應用開發與微服務、DevOps、雲計算之間的溝壑,讓我們輕鬆擁抱雲上微服務,但你知道它是如何做到的嗎?你對它有全面的瞭解嗎?你知道如何正確使用它嗎?新概念新技術層出不窮,讓人雲里霧裡,你是否想撥開雲霧對它們有更清晰的認知? ...
  • 類的變數分成2種: 1、成員變數 概念:在構造方法中的變數,前面帶有self 作用:可以在類中不同的方法間使用 2、類變數-靜態變數 概念:在類中,構造方法和普通方法之外,定義的變數 作用: 1、調用 1、類名可以調用 類名.類變數 2、對象名也可以調用 對象名.類變數 ... ...
  • 原鏈接:https://zhuanlan.zhihu.com/p/73001806 在使用PC時與PC交互的主要途徑是看屏幕顯示、聽聲音,點擊滑鼠和敲鍵盤等等。在自動化辦公的趨勢下,繁瑣的工作可以讓程式自動完成。比如自動化測試、自動下單交易等。很多軟體除了可以GUI方式操作外還可以用CLI介面操作, ...
  • IO概述 當我們在生活中把電腦上的數據拷貝到U盤或者硬碟上時,就是進行數據傳輸,按照數據的流動方向,我們分為輸入(input)和輸出(output),即就是所謂IO流 Java中I/O操作主要是指使用 java.io 包下的內容,進行輸入、輸出操作。輸入也叫做讀取數據,輸出也叫做作寫出數據 IO的分 ...
  • ——日拱一卒,不期而至! 你好,我是彤哥,本篇是netty系列的第七篇。 簡介 上一章我們一起學習了Java NIO的核心組件Buffer,它通常跟Channel一起使用,但是它們在網路IO中又該如何使用呢,今天我們將一起學習另一個NIO核心組件—— Selector ,沒有它可以說就乾不起來網路I ...
  • 在控制面板的程式與功能里啟用和關閉windows功能打開,適用於linux的windows子系統 在微軟商店裡搜索ubuntu,直接點擊安裝就可以了 安裝完成後的windows與linux的磁碟映射見下圖 配置開發環境,下載和安裝vscode,打開後直接讓安裝一個擴展可以連接子系統的目錄 windo ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...