1.析構(gòu)函數(shù)
作用:來幫助我們進行廢棄內(nèi)存的回收機制
變量的聲明,方法的聲明都會占用程序的內(nèi)存,而內(nèi)存太大的話會導(dǎo)致程序運行不順暢,甚至崩潰,所以就會有了釋放內(nèi)存的行為,也是為了讓程序運行起來更加順暢,C#的析構(gòu)函數(shù)作用就是如此。
-
語法:
public class Eat { ~Eat { } }
感覺這個并沒有什么卵用,只是有一點要注意,就是它的釋放順序。
例如:
classA為父類,classB繼承classA,而classC又繼承的classB,那么它的釋放順序為先C再B再A。
- 一個類最先執(zhí)行的函數(shù)為構(gòu)造函數(shù),在創(chuàng)建類的對象的時候就調(diào)用了它的構(gòu)造函數(shù),最后執(zhí)行的是析構(gòu)函數(shù),當這個函數(shù)結(jié)束的時候,系統(tǒng)會自動判斷這個函數(shù)是否結(jié)束,然后調(diào)用它的析構(gòu)函數(shù)來釋放內(nèi)存。
2密封類和密封方法
2.1關(guān)鍵字: sealed
表示什么意思呢,就是這個關(guān)鍵字加在類和方法的前面,顧名思義,密封了,加在類的前面呢,就表示這個類不能被繼承了。
但是加在方法前就有所不同了,sealed這個關(guān)鍵字只能加在重寫的方法里,重寫的方法也是有關(guān)鍵字的,父類的方法要加關(guān)鍵字virtual,子類的方法中要加override,這時候把sealed這個關(guān)鍵字加在override前面,就表示這個方法被密封了,表示這個方法不能被重寫了。
3抽象類
- 關(guān)鍵字abstract
- 個人理解
- 老師在上課舉了個例子,在游戲中會有一個怪物類,這個怪物類中有作為怪物的基本屬性和攻擊方法,但是游戲中會有BOSS和小怪,他們的攻擊方法不一樣,這時候就會用到抽象類。
- 抽象類中寫一個攻擊方法,但是不去實現(xiàn)它,讓它的子類,小怪和BOSS去繼承這個抽象類,那么子類就必須去實現(xiàn)父類中的攻擊方法,抽象類中并不是所有的成員都是抽象的,但是這個類中只要有一個抽象方法,那么這個類就必須定義成抽象類。
- 抽象類只可以進行聲明,不能進行實例化,什么意思呢?
就和 Person P1=new student();
這時候的Person類只是進行了聲明,沒有實例化。
Person P1=new Person();
等號后面就是進行了實例化。
4list集合
- 暫且理解為比數(shù)組更高級別的東西,他們叫它集合,它和數(shù)組的區(qū)別在于,數(shù)組存儲的時候需要大小,就是這個數(shù)組要存儲多少個元素,而list不用考慮,它還可以存儲任何類型的變量,包括我們自己創(chuàng)建的類。
- 寫法
public list<friends> a=new list<friends>();
friends是一種數(shù)據(jù)類型,a是這個集合的名字。
5產(chǎn)生隨機數(shù)的方法
- 寫法
Randon qq=new Ramdon();
產(chǎn)生一個隨機數(shù)得有一個變量來接收它,數(shù)據(jù)長就用lang,短就用int來,是情況而定。 - 比如要產(chǎn)生一個10位的QQ號碼。
public string creatQq
{ - Random qq=new Random();//隨機產(chǎn)生一個QQ
int qqlist=0;//聲明一個變量來接收產(chǎn)生的QQ
for(int i=0;i<10;i++)//用for循環(huán)來將這個變量來累加,最終得到一個十位數(shù)的數(shù)字,作為QQ號。
{
qqlist+=qq.next(0,10)*math.pow(10,i)//next是系統(tǒng)的一個方法,產(chǎn)生0到9之間的一個隨機數(shù),乘以10的i次方。依次產(chǎn)生每一位數(shù)。
}
reture qqlist;
}