oop:面向?qū)ο蠊停Q(chēng)叫 object oriented programming
面向?qū)ο蟮娜筇匦裕?.封裝? 2.繼承? ? 3.多態(tài)
類(lèi)的定義:實(shí)際上就是具有相同屬性和特征的一類(lèi)事物的抽象集合更振。
?對(duì)象的定義:抽象類(lèi)的實(shí)例鲫趁。
類(lèi)和對(duì)象的關(guān)系斯嚎,類(lèi)是對(duì)象的抽象,對(duì)象是類(lèi)的實(shí)例
?1.知道了類(lèi)的定義,如何定義類(lèi)
使用系統(tǒng)關(guān)鍵字(訪問(wèn)修飾符 internal)class+類(lèi)名{
?}
class Student?
{
}
這樣就定義了一個(gè)類(lèi)
注意一點(diǎn):類(lèi)和類(lèi)之間屬于同級(jí)關(guān)系
?2.如何描述類(lèi)的特征
? ? ? ? 字段或者類(lèi)成員對(duì)象
? ? ? ?字段和普通局部變量的區(qū)別
? ? ? ? 局部變量沒(méi)有初始化堡僻,訪問(wèn)該局部變量編譯不會(huì)通過(guò)糠惫,字段不會(huì)
3.實(shí)例化對(duì)象
采用系統(tǒng)關(guān)鍵字new + 類(lèi)名()
Student ?p = new Student();
這樣就實(shí)例化了一個(gè)對(duì)象
*? new關(guān)鍵字的作用:?
? ? 1.開(kāi)辟一塊內(nèi)存空間(堆區(qū))
? ? 2.在開(kāi)辟出來(lái)的內(nèi)存空間中存對(duì)象信息
? ? 3.初始化對(duì)象(調(diào)用構(gòu)造函數(shù))
* 4.如何描述類(lèi)的行為
* ? ? ?叫做方法或者函數(shù)
* 語(yǔ)法格式 修飾詞+函數(shù)返回值+函數(shù)名(形參列表){
* 函數(shù)體;
* }
? public void hello()
{
}
這是一個(gè)無(wú)參無(wú)返的方法
* 5.修飾符()
* public:公開(kāi)的意思钉疫,常用于修飾類(lèi)字段硼讽,修飾類(lèi)中的方法
* 就是可以非本類(lèi)之外也可以訪問(wèn)
* private:常用于修飾字段,方法陌选,也是C#語(yǔ)言中默認(rèn)的修飾符
* 就是只有本類(lèi)才可以訪問(wèn)理郑。
* internal:程序集內(nèi)部可以訪問(wèn)
* protected:基類(lèi)和派生類(lèi)可以訪問(wèn)
常用四個(gè)訪問(wèn)修飾符,還有一個(gè)是 internal protected 表示在同一個(gè)程序集內(nèi)的基類(lèi)和派生類(lèi)可以訪問(wèn)
* 6.方法的返回值
* 如果方法有返回值咨油,就返回方法實(shí)際類(lèi)型的返回值您炉,關(guān)鍵字return + 返回內(nèi)容
* 如果方法內(nèi)有多個(gè)return就返回第一個(gè)return,其余return沒(méi)用
* 如果方法沒(méi)有返回值役电,可以省略return不寫(xiě)赚爵,直接寫(xiě)方法體內(nèi)的方法塊即可
* 方法有四種
? ? ? ? 有參無(wú)返,無(wú)參無(wú)返法瑟,有參有返冀膝,無(wú)參有返
* 7.枚舉變量
*
* 格式:enum + 枚舉名稱(chēng)
*? ? {
* 枚舉變量1,
* 枚舉變量2霎挟,
* 枚舉變量3
* ? ? ? }
*
* 8.構(gòu)造函數(shù)(重點(diǎn)掌握)
* 構(gòu)造函數(shù)的作用:讓一個(gè)類(lèi)更完整窝剖,構(gòu)造函數(shù)就是用來(lái)創(chuàng)建對(duì)象,初始化字段用的酥夭。
* 構(gòu)造函數(shù)的格式:修飾符 + 類(lèi)名(){
* }
* 構(gòu)造函數(shù)的特點(diǎn)
* 1.構(gòu)造函數(shù)壓根就沒(méi)有返回值
* 2.構(gòu)造函數(shù)的名稱(chēng)必須和類(lèi)名保持一致
* 3.構(gòu)造函數(shù)支持方法重載赐纱,換句話說(shuō)可以有多個(gè)構(gòu)造函數(shù),但是熬北,參數(shù)個(gè)數(shù)必須不相同
* 4.構(gòu)造函數(shù)無(wú)法進(jìn)行手動(dòng)調(diào)用(系統(tǒng)自動(dòng)調(diào)用)
* 5.如果類(lèi)中不包含構(gòu)造函數(shù)疙描,那么系統(tǒng)會(huì)自動(dòng)的為該類(lèi)添加一個(gè)無(wú)參的構(gòu)造方法
* 6.如果類(lèi)中存在帶有參數(shù)的構(gòu)造函數(shù),那么系統(tǒng)不會(huì)為該類(lèi)添加無(wú)參的構(gòu)造方法
class Student
{
private string name;
public int sno;
private int nianji;
private int classNum;
private int score;
public Student(string name,int sno,int nianji,int classNum,int score)
{
this.name = name;
this.sno = sno;
this.nianji = nianji;
this.classNum = classNum;
this.score = score;
}
public void show(int sno){
if (this.sno == sno) {
Console.WriteLine ("名字:{0}學(xué)號(hào)是:{1}年級(jí):{2}班級(jí):{3}分?jǐn)?shù):{4}",name,sno,nianji,classNum,score);
}
}
}
在Main方法里面是
Student p = new Student ("dsa", 10, 2, 1, 50);
p.show(10);
這樣就用構(gòu)造函數(shù)給類(lèi)里面的字段進(jìn)行了賦值讶隐,show方法是為了查找學(xué)號(hào)為10的學(xué)生起胰;