oop:面向對象,全稱叫Object?oriented?programming
?*?面向對象的三大特點:1.封裝,
?*?????????????????????????2.繼承
?*?????????????????????????3.多態
?*?
?*?
?*?類的定義:實際上就是具有相同屬性和特征的一類事物的抽象集合
?*?注意:類是對象的抽象,對象是類的實例
?*?
?*?對向的定義:抽象類的實例
?*?
?*?昨天我去了工商銀行去辦銀行卡,在我前邊有50個人?、、、53
?*?
?*?1.知道了類的定義,如何定義類?
?*?????????使用系統關鍵字:(默認訪問修飾符internal)Class?+類名+{}
?*?????????注意1點:類和類屬于同級關系
?*?2.如何描述類的特征
?*???????叫字段或類成員變量
?*???????字段和普通局部變量的區別,訪問該局部變量時編譯會通過?字段不會
?*?3.實例化對象
?*??????????采用系統關鍵詞new?+?類名()
?*???????new?關鍵字的作用:
?*?????????????1,。開辟一塊內存空間(堆區)
?*?????????????2.在開辟出來的內存空間中存對象信息(字段屬性方法)
?*????????????3.初始化對象(調用構造函數)
?*?
?*?4.如何描述類的行為
?*??????叫方法或者函數
?*?????????語法格式:修飾詞+函數返回值+函數名(方法名)(形參列表)
?*?{
?*?
?*?}
?*?5.修飾符()
?*?????public:公開·的意思,常用于修飾類,修飾類字段,修飾類種方法
?*?????????????????就是非本類之外也可以訪問
?*?????private?:私有的,常用于修飾字段,方法,也是C#中默認的修飾符,
?*?????????????????就是只有本類才可以訪問
?*?????intrnal:程序集內部可以訪問
?*?????protected:基類&&派生類可以訪問
?*?????
?*?6.如果方法又返回值就返回方法的實際類型的返回值,關鍵字:return?+返回內容;
?*?如果方法沒有返回值,就可以省略retrun不寫,直接寫方法體內的方法快即可
?*?
?*?4種方法
?*?有參有返回值
?*?有參無返回值
?*?無參有返回值
?*?無參無返回值
?*?
?*?
?*?7.枚舉變量
?*?格式:enum+枚舉名稱
?*?{
?*?枚舉變量1,
?*??枚舉變量1,
?*??枚舉變量1
?*?}
?*?8.構造函數(重點掌握)
?*?構造函數的作用:讓一個類更完整。
?*?構造函數其實就是用來創建對象,初始化字段用的
?*?構造函數的語法格式為:修飾符+類名
?*?{
?*?}
?*?構造函數的特點:
?*?1,沒有返回值
?*?2,構造函數的名字必須和類名保持一致
?*?3,構造函數支持方法重載,換句話說就是可以有多個構造函數,但參數個數不能相同
?*?4.構造函數無法進行手動調用(系統自動調用)
?*?5.如果類中不包含構造函數,那么系統會自動為該類添加一個無參的構造函數
?*?6.如果類中存在帶有參數的構造函數,那么系統不會為該類添加無慘的構造函數
?*/?
?????????
//定義枚舉
?enum?Ge
????{
????????男,
????????女
????}
?? 代碼實現
??????????????????????????????????????????
//學生類
????class?Student{
????????public?int?id;
????????private?string?name;
????????private?string?classshu;
????????private?int?fs;
????????public?Student(int?id,string?name,string?classshu,int?fs)
????????{
????????????this.id?=?id;
????????????this.name?=?name;
????????????this.classshu?=?classshu;
????????????this.fs?=?fs;
????????????Console.WriteLine?("學號為{0}的學生姓名為:{1}??年級為:{2}??分數為:{3}",id,name,classshu,fs);
????????}
????}
????//全真:
????class?Quanzhen{
????????//public?string?name;?
????????public?string?zmname?;
????????public?int?zmage;?
????????//public?string?wdname;?
????????public?Quanzhen(string?zmname,int?zmage)
????????{
????????????this.zmname?=?zmname;
????????????this.zmage?=?zmage;
????????????Console.WriteLine?("全真教掌門名字為:{0}年齡為:{1}",zmname,zmage);
????????}
????????public?Quanzhen(string?wdname,string?name)?
????????{
????????????Console.WriteLine?("武當掌門{0}到{1}來參觀",wdname,name);
????????}
????}
????//武當:
????class?Wudao{
????????//????????public?string?name;?
????????//????????public?string?qzzmname?;
????????//????????public?string?zmname;?
????????//????????public?string?zmage;?
????????public?Wudao(string?zmname,int?zmage)
????????{
????????????Console.WriteLine?("武當教掌門名字為:{0}年齡為:{1}",zmname,zmage);
????????}
????????public?Wudao(string?qzzmname,string?name)
????????{
????????????Console.WriteLine?("全真教掌門{0}到{1}來參觀",qzzmname,name);
????????}
????}
????//丐幫:
????class?Gaibao{
????????//????????public?string?name;?
????????//????????public?string?qzzmname;?
????????//????????public?string?zmname;?
????????//????????public?string?zmage;?
????????public?Gaibao(string?zmname,int?zmage)
????????{
????????????Console.WriteLine?("武當教掌門名字為:{0}年齡為:{1}",zmname,zmage);
????????}
????????public?Gaibao(string?qzzmname,string?name)
????????{
????????????Console.WriteLine?("全真教掌門{0}到{1}來參觀",qzzmname,name);
????????}
????}
????class?Boss
????{
????????public?string?name;
????????//????????public?int?fyl;?
????????//????????public?int?gjl;??
????????//????????public?int?xl;??
????????//????????public?int?mfz;??
????????public?Boss()
????????{
????????}
????????public?Boss(string?name,?int?mfz?)
????????{
????????????this.name?=?name;
????????????Console.WriteLine?("我的名字是:{0}?魔法值為{1}",name,mfz);
????????}
????????public?Boss(string?name,int?fyl,int?xl?)?
????????{
????????????Console.WriteLine?("我的名字是:{0}防御力是{1}血量是{2}",name,fyl,xl);
????????}
????}
????//定義了一個人類
????class?Person
????{
????????//特征
????????//名字
????????public?string?name;??
????????//年齡
????????public?int?age;???
????????//性別
????//????public?string?gender;
????//性別枚舉
????????public?Ge?gender;?
????????//構造函數????
????????public?Person()
????????{
????????????Console.WriteLine?("構造函數");
????????}
????????//This關鍵字:代表這個類的這個函數
????????public?Person(string?name)
????????{
????????????this.name?=?name;
????????????Console.WriteLine?("名字為:{0}",name);
????????}
????}
????class?Boss
????{
????????public?string?name;
????????//????????public?int?fyl;?
????????//????????public?int?gjl;??
????????//????????public?int?xl;??
????????//????????public?int?mfz;??
????????public?Boss()
????????{
????????}
????????public?Boss(string?name,?int?mfz?)
????????{
????????????this.name?=?name;
????????????Console.WriteLine?("我的名字是:{0}?魔法值為{1}",name,mfz);
????????}
????????public?Boss(string?name,int?fyl,int?xl?)?
????????{
????????????Console.WriteLine?("我的名字是:{0}防御力是{1}血量是{2}",name,fyl,xl);
????????}
????}
????//定義了一個人類
????class?Person
????{
????????//特征
????????//名字
????????public?string?name;??
????????//年齡
????????public?int?age;???
????????//性別
????//????public?string?gender;
????//性別枚舉
????????public?Ge?gender;?
????????//構造函數????
????????public?Person()
????????{
????????????Console.WriteLine?("構造函數");
????????}
????????//This關鍵字:代表這個類的這個函數
????????public?Person(string?name)
????????{
????????????this.name?=?name;
????????????Console.WriteLine?("名字為:{0}",name);
????????}
????}
????????//行為?1.....吃
????????public?void?Eat(string?foodname)
????????{
????????????Console.WriteLine?("{0}在吃{1}",name,foodname);
????????
????????}
????????//行為?2
????????public?string?SayHi()
????????{
????????
????????????return?"我是"?+?name?+?"大家好";
????????}
????}
????class?Class1{
????????public?string?name;
????????public?int?renshu;??
????????public?void?Shangke(string?student)
????????{
????????
????????????Console.WriteLine?("班級{0}中李四在上{1}",name,student);?
????????}
????}
????class?Food{
????????public?string?shuigu;
???????public?string?mianshi;?
????????public?string?rou;
????????public?void?Eat1(string?food)
????????{
????????
????????????Console.WriteLine?("食物有{0}張三喜歡吃{1}",shuigu,food);
????????}
????????public?void?Eat2(string?food)
????????{
????????????Console.WriteLine?("食物中{0}李四喜歡吃{1}",rou,food);
????????}
????}
????class?MainClass
????{
????????//練習2:定義一個方法,比較int類型的數據,得到其最大值;
????????public?int?Max(int?i,int?j)
????????{
????????????
????????????if?(i?>?j)?{
????????????????Console.WriteLine?(i);
????????????}?else?{
????????????????Console.WriteLine?(j);
????????????}
????????????return?i>j?i:j;????
????????}
????????public?void?pj(string?a,string??b)
????????{
????????
????????????Console.WriteLine?(a+b);
????????
????????}
????public?int?SumValue(int?n)
????{int?sum=0;
????????for?(int?i?=?1;?i?<=?n;?i++)?{
?????????????sum?+=i;
????????}
????????return?sum;
????}
????????//練習2:定義一個方法,比較int類型的數據,得到其最大值;
////????????????MainClass?m=new?MainClass();
//????????????int?max1=new?MainClass().Max(18,25);?
//????????????Console.WriteLine?(max1);
//????????????//new?MainClass().Max(15,20);
//????????//編寫方法int?SumValue(int?n):計算1-n的和
//????????Console.WriteLine?(new?MainClass().SumValue(100)?);?
????????????//枚舉演示
????????????//訪問枚舉變量是用枚舉名.的方式調用
????????????//在Unity?中枚舉常用來判斷游戲狀態·1(游戲開始,游戲暫停,游戲結束)
????????????Person?p=new?Person();
????????????p.name?=?"劉德化";
????????????????p.age=55;
????????????????p.gender?=?Ge.男;
????????????Person?p1?=?new?Person?("劉德");
????????????//練習1:該類包含一個Boss類,該類包含攻擊力,防御力,血量及魔法值等字段
????????????//包含一個介紹自己的行為比如(我是XXX,我的攻擊力是XXX。。。)
????????????//要求:使用至少3種構造函數對該boss類進行實例化,調用自身的行為
????????????Boss?b=new?Boss();
????????????Boss?b1?=?new?Boss?("李四",120);
????????????Boss?b3?=?new?Boss?("王五",50,90);
????????????//練習2:設計一個學生類,包含學號,姓名,(私有字段),年級(私有字段)
????????????//?練習3.設計全真教,武當,丐幫類
????????????//全真:
????????????//?字段:掌門姓名,掌門年齡
????????????//?方法:介紹全真,武學介紹
????????????Quanzhen?q?=?new?Quanzhen?("李四",50);?
????????????Quanzhen?q1?=?new?Quanzhen?("老王",?"全真");
????????????//武當:
????????????//?字段:掌門姓名,掌門年齡
????????????//?方法:介紹全真,武學介紹
????????????Wudao?w=new?Wudao("老王",60);?
????????????Wudao?w1=new?Wudao("李四","武當");?
????????????//丐幫:
????????????//?字段:掌門姓名,掌門年齡
????????????//?方法:介紹全真,武學介紹
????????????//
????????????Gaibao?g?=?new?Gaibao?("王五",67);
????????????Gaibao?g1?=?new?Gaibao?("李四","丐幫");
????????????//1.分別采用不同的構造方法對門派進行實例化對象
????????????//2.每個門派至少包括1個其他門派掌門人來該門派的訪問信息
????????????//比如:全真包含
????????????//?武當xxx,到本派進行參觀
????????????//練習2.設計一個學生類,包含學號,姓名(私有字段),年級(私有),班級分數(私有)
????????????//通過構造函數可以對學生進行實例化(不能對私有字段賦值)
????????????//通過輸入學號可以獲取該學生的相關信息,比如101,可以顯示101對應的學生姓名年級班級等信息
????????????Student?s?=?new?Student?(101,?"張三",?"SHU",90);?
????????}
????}
}
class?Student{
????????private?string?name;
????????public?string?Name{
????????????get{?
????????????????return?name;
????????????}
????????????set{?
????????????????name?=?value;
????????????}
????????}
????????public?void?A()
????????{
????????????Console.WriteLine?(name);
????????}
????????public?string?xuehao;??
????????public?int?age;??
????}
????class?Class{
????????public?string?name;
????????public?string?clasname;?
????????public?int?rs;??
????????public?string?techname;?
????????public?string?time;?
????????public?Class(string?name)
????????{
????????????this.name?=?name;
????????????Console.WriteLine?("{0}集體活動與開班儀式",name);
????????}
????}
????class?Techer{
????????public?string?name;?
????????public?int?age;????
????????public?string?kc;?
????????public?string?gender;?
????????public?string?classname;?
????????public?Techer()
????????{
????????????Console.WriteLine?("講課、布置作業、驗收作業、解決問題、自我介紹。");
????????}
????}
????class?Student1{
????????public?string?name;?
????????public?int?age;?
????????public?string?kc;?
????????public?string?gender;?
????????public?string?classname;?
????????public?int?xh;?????????
????????public?string?techername;?
????????public?void?Arr(int[]?a,int[]?b)
????????{
????????????Array.Copy?(a,?b,?4);
????????}
????????public?void?Arr1(int?[]ab)
????????{
????????????foreach?(var?item?in?ab)?{
????????????????Console.WriteLine?(item);
????????????}
????????}
????}
????class?MainClass
????{
????????public?static?void?Main?(string[]?args)
????????{
//????????????《第六講:C#語言編程》類
//
//????????
//????????????1.(*)完成課件的練習,建30個類,每個類有自己的特征,為特征填寫Get?方法和Set方法。
????????????Student?s?=?new?Student?();
????????????s.Name="aaaa";
????????????s.A?();
//????????????3.(**)創建一個方法,功能是把一個int類型的數組拷貝到另外一個數組里面,并把數組各元素打印出來;
????????????Student1?s2=new?Student1();
????????????int?[]a={1,2,3,4};
????????????int[]?b?=?new?int[4];
????????????s2.Arr?(a,b);
????????????foreach?(var?item?in?b)?{
????????????????Console.WriteLine?(item);
????????????}
//????????????4.(**)創建一個方法,求一個int類型數組里面元素的和,并把和打印出來;
????????????Student1?s3=new?Student1();
????????????int?[]ab={1,2,3,4,5};
????????????s3.Arr1?(ab);
????????}
????}
????