23 是時候學點C#面向對象的東東了

来源:http://www.cnblogs.com/thinking-jiang/archive/2016/07/18/5680627.html
-Advertisement-
Play Games

在我們前面的代碼中已經接觸到了C#的類(class)還有類的方法。我們的代碼主要都放在Program 類的Main方法裡邊。我們也創建了我們自己的方法。同時我們也使用了類Console的writeline等方法。但是我想到目前為止我們還是不是很清楚類是一個什麼東西。接下來我就給大家介紹一下類還有面向 ...


在我們前面的代碼中已經接觸到了C#的類(class)還有類的方法。我們的代碼主要都放在Program 類的Main方法裡邊。我們也創建了我們自己的方法。同時我們也使用了類Console的writeline等方法。但是我想到目前為止我們還是不是很清楚類是一個什麼東西。接下來我就給大家介紹一下類還有面向對象編程。

 

在C#中幾乎所有的東西都是和類相關的。我們編寫的程式是由不同的類組成的。在每個類中可以有不同的屬性和方法。如何去設計類和使用類呢?這就是面向對象編程要幫助我們解決的事情。

 

首先讓我們先瞭解一下C#面向對象編程中最基本的概念。

1. 面向對象和麵向過程

面向過程的編程是在面向對象編程出現以前非常流行的編程方法論。(軟體行業的變化很快的,以前很流行的東西,隨著新的東西不停的出來,沒有多久就out了。)

“面向過程”就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。

“面向對象”是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為還有各個事物之間的互動。

舉個例子:

如何把大象裝進冰箱?

面向過程:
為了把大象裝進冰箱,需要3個過程。這三個過程可以對應三個函數。
1) 把冰箱門打開
2) 把大象裝進去
3) 把冰箱門關上
依次完成這些過程,就能把大象裝進冰箱。   面向對象:
分析把大象裝進冰箱這個事情,我們分析出兩個對象,大象和冰箱。
其中冰箱需要做三個動作,也就是三個方法。第二個動作要和大象互動。
1) 冰箱,你給我把門打開。   冰箱.開門()    
2) 冰箱,你給我把大象裝進去。 冰箱.裝進(大象)
3) 冰箱,你給我把門關上。冰箱.關門()
依次做這些動作,就能把大象裝進冰箱。

面向過程其實是最為實際的一種思考方式,就算是面向對象的方法也是含有面向過程的思想.可以說面向過程是一種基礎的方法.它考慮的是實際地實現.一般的面向過程是從上往下步步求精.所以面向過程最重要的是模塊化的思想方法.對比面向過程,面向對象的方法主要是把事物給對象化,對象包括屬性與行為。   我試著和大家解釋了一下什麼是面向對象,什麼是面向過程。不知道你有沒有搞清楚。但是我一定要給你一個忠告。
作為一個程式員, 你選擇面相過程, 就找不到對象。

少年, 你可要想好了再選擇啊 

  2. 類   類是C#面向對象編程的基本單元。一個類都可以包含2種成員:欄位和方法。

1)類的欄位代表類中被處理的數據(變數);

2)類的方法代表對這些數據的處理過程或用於實現某種特定的功能,方法中的代碼往往需要訪問欄位保存的數據。

簡單的說,欄位即變數,方法即函數。

  2.1 類的定義

C#使用class關鍵字來定義類:

class MyFirstClass
{

}

  

其中MyFirstClass 是這個類的名字。     2.2 類的成員

在類定義中,也提供了該類中所有成員的定義,包括欄位、方法和屬性。

所有成員都有自己的訪問級別。在這裡我們先學習兩個比較簡單且經常用到的訪問級別的修飾符:


public——成員可以由任何代碼訪問。
private——成員只能由類中的代碼訪問(如果沒有使用任何關鍵字,就預設使用這個關鍵字)。

其他訪問級別,如果大家感興趣,現在就想知道,可以先在網上搜索。如果查不到,也可以咨詢我。

  2.2.1 欄位

欄位用標準的變數聲明格式和前面介紹的修飾符來定義(可以進行初始化),例如:

class MyFirstClass
{
public int MyInt;
}

 



class MyFirstClass
{
public int MyInt = 10;
}

 

 

  2.2.2 方法


方法使用標準函數格式、可訪問性修飾符來聲明。例如:

class MyFirstClass
{
public string GetName()
{
return "Thinking Jiang的零基礎C#編程入門";
}
}

  

3. 對象

在C#編程中對象是類的實例。聽起來有點抽象哦。舉個具體一點的例子吧。

我們有一個車的類Car,在裡邊有車的品牌顏色等屬性。我的車,你的車就是這個車類的一個對象。裡邊的品牌顏色都有具體的值。例如我的車的是一個對象,它品牌是賓士(我的夢想),顏色是黑色。你的車是另一個對象,它的品牌是比亞迪,顏色是銀色。

在C#程式中,怎樣創建對象呢?假設我們已經有了一個名為Car的類,下列語句:   Car myCar = new Car();  //創建一個名為myCar的對象   就具體地創建了一個名為myCar的對象。我們稱“new”為Java創建對象的操作符,簡稱new操作符。它的語法格式為:   ClassName objectName = new ClassName();   其中,   ClassName ——類名。        objectName ——要創建的對象名。        new——創建對象操作符。 對象myCar則擁有了所有Car類的屬性和方法。我可以對它的屬性賦值,也可以操作car類中定義的方法。   來開一個具體的例子吧。你創建一個項目。解決方案名稱為Sloution23,項目名稱為Exercise23,項目類型為控制台程式。   右鍵點擊項目Exercise23,選擇添加-》類。     輸入新建類的名字為Car。這個類建好以後,點擊該類Car.cs,在裡邊加入如下代碼。   點擊Program.cs,在裡邊加入如下代碼     運行結果       練習     

  1. 讀懂這段代碼,為每條語句加上註釋,解釋它的功能。

  2. 在main方法中,仿照myCar新建一個名稱為yourCar的car類的新對象。為yourCar的所有欄位賦值。在dos視窗輸出該對象相應的值,調用CalculateCurrentPrice()方法,輸出汽車當前的價值。

  3. 修改Car類,加入一些新的欄位和方法。在Main方法中做相應的修改,訪問這些欄位和方法

  4. 修改Car類的欄位和方法的public訪問限制符為private。運行程式,看看是什麼結果?解釋一下原因是什麼?

 

 


付費解答C#入門學習過程中碰到的各種問題。

零基礎學習C#入門,大多數的問題都可以通過自學或藉助互聯網解決。

但是還是會有一些問題,不是那麼容易解決,成為了你學習的絆腳石。最後甚至造成你學習的半途而廢。通常學習C#編程入門,你會遇到20到30多個你不能很容易解決的問題。

這個時候,你最需要什麼呢?

對!一個專業的老師給你幫助!

你在學習本課程中,遇到任何問題都可以通過qq或email想本教程作者進行求助。

只需30元,你就可以得到本教程作者的三次專業解答。所以你只需不到300元就可以順利的完成C#入門,從此推開軟體行業的大門。

 

付費方式非常簡單:

用微信掃描下麵的二維碼。在付款留言中留下你的qq號或email地址就可以啦。

 

教育不是要便宜,而是要可靠!真正聰明的人,更懂得花錢讓專業的人為自己服務,提高自己的效率。

 

老師qq:2040227296

老師email:[email protected]


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

-Advertisement-
Play Games
更多相關文章
  • 出現這個錯誤,是系統的glibc版本太低了,需要更新 到http://ftp.gnu.org/gnu/glibc/下載新版本的glibc,也不用太高,我選擇glibc-2.20.tar.gz 解壓完畢後 ./congigure --prefix=/opt/glibc-2.20 make && mak ...
  • 前些天公司項目需要對上傳的圖片打水印,前端採用angularjs,後端nodejs,網上一搜,找到了一個images的庫,在本地Windows環境下試了下還不錯,然後就上傳測試伺服器(centos6.5系統)了,結果就出問題了,網上一查,發現需要gblic2.14(centos6.5系統自帶的是2. ...
  • 但是對於在各個 IT 領域的人們,我們需要將這個事情提高一個層面。我們需要使用像 SSH 密鑰這樣的加密秘鑰,而不只是密碼。 設想一個場景:我有一個運行在雲上的伺服器,用作我的主 git 庫。我有很多台工作電腦,所有這些電腦都需要登錄到這個中央伺服器去做 push 與 pull 操作。這裡我設置 g ...
  • 設計界面: 代碼: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; usi ...
  • 前幾天,領導讓我找一下老系統(Java)里getRemoteUser方法都哪個文件用了,package是什麼,方法被調用了多少次,當時因為著急,所以,直接人工找的,但是以後要是再出現,人工找就太討厭了,畢竟程式員以懶著稱,因此,寫了一個小工具進行查詢。 一、效果圖 從圖中不難看出,現在的功能只能查詢 ...
  • 先看一段代碼,本文所有的例子,都是在這段代碼的基礎上進行的. 一個矩形rec,放到佈局容器內,這個矩形就是被動畫控制的對象,一個double類型的動畫. 以前我後臺寫動畫,都是通過先給對象註冊名稱,通過名稱,把對象(Rectangle)和動畫(DoubleAnimation)通過Storyboard ...
  • 快捷鍵是Ctrl+F8 快捷鍵是Ctrl+Shift +Alt +A ...
  • 作為一個菜鳥,避免不了被老鳥罵爹,但是如果能有一手漂亮的代碼給你作盾牌,多少能擋掉不少的鋒芒,作為菜鳥中的菜鳥的我,便嘗試起了重構自己的代碼。 這是一種不堪的憂傷…… 首先,教材入手《重構:改善即有代碼的設計》,重點是PDF版本,又是憂傷,買本書都沒錢了,又是一種憂傷…… 然後就對著書,邊學習,便嘗... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...