C#面向對象--簡介

来源:https://www.cnblogs.com/minotauros/archive/2019/08/29/11432009.html
-Advertisement-
Play Games

一、C#提供對面向對象編程(Object Oriented Programming)的完整支持;類描述對象的類型,而對象是類的具體實例,創建對象的過程也被稱為實例化(Instantiation);通常使用new運算符來創建對象: ※其中()實際上代表的是調用類的預設構造函數來構建類的實例; ※C#還 ...


  一、C#提供對面向對象編程(Object Oriented Programming)的完整支持;類描述對象的類型,而對象是類的具體實例,創建對象的過程也被稱為實例化(Instantiation);通常使用new運算符來創建對象:

new MyType();

  ※其中()實際上代表的是調用類的預設構造函數來構建類的實例;

  ※C#還提供了類的輕量版本,稱為結構,當需要創建大量對象但不希望因此占用太多記憶體時,可以使用結構;

  ※一般來說,類用於較複雜的行為或在對象創建後頻繁修改值的數據結構,結構用於較簡單的行為或在對象創建後較少修改值的數據結構;

  1.定義(Define)一個命名為MyType的類或結構,那麼MyType就是類型的名稱,聲明(Declare)MyType類型的變數myObj,初始化(Initialize)myObj變數為新創建的對象或其它同為MyType類型且不為空的變數,那麼變數myObj就指向了MyType類型的一個對象:

MyType myObj = new MyType();

  二、面向對象編程的三大特性:封裝,繼承,多態,其中,類完整的支持這三大特性,結構則只支持封裝,不支持繼承和多態:

  1.封裝,是把客觀事物封裝成抽象的類,類可以把數據和行為只讓可信的類或對象操作,對不可信的進行隱藏;封裝是面向對象的特征之一,是類和對象概念的主要特性; 簡單的說,一個類就是一個封裝了數據以及操作這些數據的行為的邏輯實體,某些數據和行為可以是私有的,不能被外界訪問,通過這種方式,對象對內部數據和行為提供了不同級別的保護,以防止程式中無關的部分意外的改變或錯誤的使用了對象的私有部分;

  2.繼承,是可以使用現有類的所有功能,併在無需重新編寫原來的類的情況下對這些功能進行擴展的能力; 通過繼承創建的類稱為子類或派生類,被繼承的類稱為父類或基類;繼承的過程,就是從一般到特殊的過程;要實現繼承,可以通過繼承和組合(Composition)來實現;繼承概念的實現方式有兩種:實現繼承是指直接使用基類的方法而無需額外編碼的能力;介面繼承是指僅使用方法的名稱,但是子類必須提供實現的能力;

  3.多態,是允許將派生類對象賦值給其基類變數的技術,賦值之後,基類變數就可以根據當前賦值給它的派生類對象的類型以不同的方式運作;簡單的說,就是允許將派生類類型的指針賦值給基類類型的指針;
  三、面向對象設計的五大基本原則 :S.O.L.I.D
  1.單一職責原則(SRP,Single Responsibility Principle):一個類應該有且只有一個去改變它的理由,這意味著一個類應該只有一項工作;
  2.開放封閉原則(OCP,Open-Close Principle):對象應該對擴展開放,對修改封閉,這就意味著一個類應該無需修改類本身但卻容易擴展;
  3. 里氏替換原則(LSP,Liskov Substitution Principle):在對象x為類型T時q(x)成立,那麼當S是T的派生類時,對象y為類型S時q(y)也應成立,即對基類的調用同樣適用於派生類,每一個基類實例都應該可以替換成它們的派生類實例;
  4.介面分離原則(ISP,Interface Segregation Principle):不應強迫客戶端實現一個它用不上的介面,或是說客戶端不應該被迫依賴它們不使用的方法;
  5.依賴反轉原則(DIP,Dependency Inversion Principle):對象必須依靠抽象而不是具體實現,它表示高層次的模塊不應該依賴於低層次的模塊,它們都應該依賴於抽象;

 


如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的認可是我寫作的最大動力!

作者:Minotauros
出處:https://www.cnblogs.com/minotauros/

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


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

-Advertisement-
Play Games
更多相關文章
  • 我們看下代碼覆蓋率的統計~,這個不必太揪心,覺得可以幫助你優化代碼,可以看看,也不要帶在意~ 1、先在cmd命令視窗線上安裝coverage 2、安裝完畢後我們在cmd命令視窗輸入:命令 從當前目錄切換到代碼模塊.py文件的所在目錄 3、開始使用coverage統計代碼的覆蓋率,在cmd輸入 all ...
  • 我分了兩種下載安裝的方式給大家看,註意資料庫這個東西不在乎版本是不是最新,在乎的是夠穩定,現在公司中常用的是mysql5.5和mysql5.6的版本,我現在就用mysql5.6的版本給大家來演示一下: 第一種下載安裝的方法: mysql下載地址:https://dev.mysql.com/downl ...
  • 今天的內容主要是,用第三方的HTMLRUNner 第三方的報告來優化之前第五天批量執行案例的測試報告。案例的部分看第五天的批量執行筆記~ HTMLRUNner他可以生成更美觀的測試報告,基於前輩造的車子,我們直接改造使用。先看下運行代碼部分: 首先如果你是python3,你可以直接用我改過的TMLT ...
  • 在 "上一篇文章" 中我們介紹了使用vs2019作為遠程Linux系統的開發環境,但我們是創建的傳統的sln項目,而對於Linux開發者來說以autotools或是cmake進行項目結構的組織更為簡單直觀,也符合在Linux環境上的習慣。 autotools是較為古老的也是使用最為廣泛的構建系統,你 ...
  • 已安裝的環境nginx,python3,mysql,uwsgi,virtualenv 1,創建虛擬環境 2,進入虛擬環境 3,在虛擬環境中安裝flask和uwsgi 4,配置uwsgi,在部署項目的根目錄下創建配置文件uwsgiconfig.ini,添加配置內容如下 5,配置nginx,添加如下內容 ...
  • 一、概念介紹 素數又稱為質數。一個大於1的自然數(從2開始),除了1和它本身外,不能被其他自然數整除的叫做素數,否則稱為合數。 0和1既不是素數也不是合數,最小的素數是2。 二、代碼 方法一: 註意:在for迴圈判斷時不能忘記 i <= sqrt(num) 的等號,因為假設 p*p = n , n的 ...
  • 原文:https://blog.csdn.net/LaySwift/article/details/79458947 1,vscode原生支持markdown,導出需要插件,基於node.js,需要node.js環境。2,只需要裝一個預覽插件神器:Markdown Preview Enhanced。 ...
  • 給 asp.net core 寫個中間件來記錄介面耗時 Intro 寫介面的難免會遇到別人說介面比較慢,到底慢多少,一個介面伺服器處理究竟花了多長時間,如果能有具體的數字來記錄每個介面耗時多少,別人再說介面慢的時候看一下介面耗時統計,如果幾毫秒就處理完了,對不起這鍋我不背。 中間件實現 asp.ne ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...