C#基礎筆記(第九天)

來源:互聯網
上載者:User

標籤:在家   collect   get   lis   垃圾   ret   style   存在   eth   

1、面向過程<-->物件導向
面向過程:面向的是完成這件事兒的過程,強調的是完成這件事兒的動作。

物件導向:找個對象幫你做事兒。意在寫出一個通用的代碼,屏蔽差異。

每個人都有姓名,性別,身高,體重,年齡. 這些可以看做是對象的屬性
對象必須是看得見摸得著的

我們把這些具有相同屬性和相同方法的對象進行進一步的封裝,抽象出來 類這個概念。
類就是個模子,確定了對象應該具有的屬性和方法。
對象是根據類建立出來的。

2、類
文法:
[public] class 類名
{
欄位;(儲存資料,儲存多個值)
屬性;
方法;
}
寫好了一個類之後,我們需要建立這個類的對象,
建立這個類的對象過程就叫類的執行個體化。
使用關鍵字 new.

this:表示當前這個類的對象。
類是不佔記憶體的,而對象是占記憶體的。

之前只有類,沒有對象,當我們執行個體化對象,給它賦值之後(對象),對象就出現了。以後操作就針對這個對象去操作。這就是物件導向的操作。

自訂類,不是系統提供的,自己寫的。
欄位預設情況下有初值。欄位占記憶體。

3、屬性
屬性的作用就是保護欄位、對欄位的賦值和取值進行限定。
屬性的本質就是兩個方法,一個叫get()一個叫set()。
√ get()  √ set() 可讀可寫屬性。
√ get()  × set() 唯讀屬性
× get()  √ set() 唯寫屬性

Fields 欄位
Methods 方法
Property 屬性

set就是把傳進來的值通過屬性賦值給欄位。

一個給賦值的時候調用,一個給取值的時候調用
用屬性裡的兩個方法來對欄位進行限定。
當你給屬性賦值的時候,首先會執行set方法。
當你輸出屬性的值得時候,會執行get方法。

過程中屬性是沒有存值的,只是一個過渡,再處理。

****欄位就是女人,屬性才是男人。
女人在家相夫教子,所有跟外界打交道的事情都是男人做。

4、對象
當我們建立好一個類的對象後,需要給這個對象的每個屬性去賦值。
我們管這個過程稱之為對象的初始化。

在set裡面判斷value的值,在get裡面判斷欄位的值。

set 把賦值給屬性的值再賦值給欄位, get 把欄位的值返回(返回之前可以做一個限定)

方法中輸出欄位不輸出屬性的話,get判斷就用不上,沒辦法限定了。

5、靜態和非靜態區別
1)、在非靜態類中,既可以有執行個體成員,也可以有靜態成員。(非靜態欄位,屬性,方法和靜態欄位,屬性,方法)
2)、在調用執行個體成員的時候,需要使用對象名.執行個體成員;
在調用靜態成員的時候,需要使用類名.靜態成員名;
get{ return person._name;}
set{person._name=value;}

總結:靜態成員必須使用類名去調用,而執行個體成員使用對象名調用。
靜態函數中,只能訪問靜態成員,不允許訪問執行個體成員。
執行個體函數中,既可以使用靜態成員,也可以使用執行個體成員。
靜態類中只允許有靜態成員,不允許出現執行個體成員。

問:為什麼靜態類不讓建立對象?
答:因為它調用要用類名去調用,建立對象沒用,用不了,文法上沒有。

使用:
1)、如果你想要你的類當做一個"工具類"去使用,這個時候可以考慮將類寫成靜態。經常使用的,如console
2)、靜態類在整個項目中資源共用。
只有在程式全部結束之後,靜態類才會釋放資源。

console也是靜態類
靜態類不允許被執行個體化

問:為什麼經常使用就要寫成靜態類?
答:因為不需要建立對象,只需要類名.方法名。方便

靜態類需要儲存資料,占記憶體的。
記憶體的儲存地區分為3大類
堆 棧 靜態儲存地區

從QQ程式進入,QQ登入一次,使用微博,遊戲,音樂,空間都不需要再登陸
應用程式多個模組。要把使用者名稱和密碼存在靜態類中。

靜態類什麼時候釋放資源?程式結束的時候釋放資源。靜態類在執行時會一直消耗資源,所以不要用太多

釋放資源。GC Garbage Collection記憶體回收行程


6、建構函式
作用:協助我們初始化對象(給對象的每個屬性依次的賦值)
建構函式是一個特殊的方法:
1)、建構函式沒有傳回值,連void也不能寫。
2)、建構函式的名稱必須跟類名一樣。

重載 一樣的名不一樣的參數

public student();

建立對象的時候會執行建構函式
建構函式是可以有重載的。
***
類當中會有一個預設的無參數的建構函式,當你寫一個新的建構函式之後,不管是有參數的還是
無參數的,那個預設的無參數的建構函式都被幹掉了。


7、new關鍵字
Person zsPerson=new Person();
new協助我們做了3件事兒:
1)、在記憶體中開闢一塊空間
2)、在開闢的空間中建立對象
3)、調用對象的建構函式進行初始化對象

8、this關鍵字
1)、代表當前類的對象
2)、在類當中顯示的調用本類的建構函式 :this()

public Student(string name,char gender,int age,int chinese,int math,int english ){this.Name = name;this.Gender = gender;this.Age = age;this.Chinese = chinese;this.Math = math;this.English = english;}public Student(string name,char gender,int age):this(name,gender,age,0,0,0) 沒有的就用0來代替{this.Name = name;this.Gender = gender;this.Age = age;}

 

不用寫冗餘代碼

9、解構函式
當程式結束的時候,解構函式才執行
協助我們釋放資源
.net引用了 GC Garbage collection 一般不手動調用都是自動調用。
有可能程式結束的時候,GC沒有馬上幫我們釋放資源
如果資源沒有被馬上釋放的話,這時候就使用解構函式(如果希望馬上釋放資源)

放類裡面
~Student()
{
console.writeline("我是解構函式");
}

10、總結
物件導向:概念
類 文法
成員:欄位,屬性,方法,建構函式
對象
new
this
靜態和非靜態區別:調用上的區別

C#基礎筆記(第九天)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.