C# 學習筆記-面向物件基礎語法
阿新 • • 發佈:2018-12-10
面向物件的概念
面向過程:面向的是完成這件事的過程,強調的是完成這件事的動作;
把大象塞進冰箱裡:
1、開啟冰箱;
2、把大象塞進去;
3、關閉冰箱門。如果我們用面向過程的思想來解決這件事兒,當執行這件事的人不同的時候,我們需要為每個不同的人量身定做解決事情的方法。
面向物件:找個物件幫你做事兒?
面向物件的好處是可以寫出比較通用的程式碼。- 面向過程與面向物件的區別
來自知乎:https://www.zhihu.com/question/28790424/answer/42102986
面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候一個一個依次呼叫就可以了。面向物件是把構成問題的事物分解成多個物件,建立物件的目的不是為了完成一個步驟,而是為了描述某個事物在整個解決問題的步驟中的行為。
以五子棋為例,面向過程的設計思路就是首先分析問題的步驟:
1、開始遊戲;
2、黑子先走;
3、繪製畫面;
4、判斷輸贏;
5、輪到白子;
6、繪製畫面;
7、判斷輸贏;
8、返回步驟2,9;
9、輸出最後結果。
把上面每個步驟寫成一個函式,問題就解決了。
而面向物件的設計則是從另外的思路來解決問題。整個五子棋可以分為:
1、黑白雙方,這兩方的行為是一模一樣的
2、棋盤系統,負責繪製畫面;
3、規則系統,負責判定諸如犯規、輸贏等;
第一類物件(玩家物件)負責接受使用者輸入,並告知第二類物件(棋盤物件)棋子佈局的變化,棋盤物件接收到了棋子的變化就要負責在螢幕上面顯示出這種變化,同時利用第三類物件(規則系統)來對棋局進行判定。
- 靜態與非靜態的區別
1、在非靜態類中,既可以有例項成員,也可以有靜態成員
2、在呼叫例項成員的時候,需要使用物件名.例項成員
在呼叫靜態成員的時候,需要使用類名.靜態成員名
總結:靜態成員必須使用類名去呼叫,而例項成員使用物件名呼叫。
靜態成員只能訪問靜態成員,不允許訪問例項成員。
例項函式中,既可以使用靜態成員,也可以使用例項成員。
使用:
1) 如果想要類當做一個“工具類”去使用,這個時候可以考慮將類寫成靜態類。//避免建立物件。
2) 靜態類在整個專案中資源共享。//
- 堆
- 棧
靜態儲存區
釋放資源。GC Garbage Collection 垃圾回收器。
選中屬性,Ctrl+R,E可以自動生成屬性的程式碼。建構函式
作用:幫助我們初始化物件
是一個特殊的方法:
1)建構函式沒有返回值,連void也不能寫,而且必須是public訪問修飾符
2)建構函式的名稱必須與類名一樣
3)在建立物件的時候呼叫這個方法
new 關鍵字:
1)在記憶體中開闢了一塊空間
2)在開闢的空間中建立物件
3)呼叫建構函式
建構函式可以過載this關鍵字
1)代表當前類的物件
2)在類當中顯式的呼叫本類的建構函式//過載建構函式時,避免冗餘程式碼
//建構函式,欄位,屬性,方法
public Student(string name,int age,char gender,int chinese,int math,int english)
{
this.Name = name;
this.Age = age;
this.Gender = gender;
this.Chinese = chinese;
this.Math = math;
this.English = english;
}
public Student(string name,int chinese,int math,int english):this(name,0,'c',chinese,math,english)
{
}
- 解構函式
~Student():~加類名
當程式結束的時候,解構函式才執行,幫助我們釋放資源。
與GC的區別是解構函式釋放資源的速度比較快。