前言: 徹底是我在學習過程當中記錄的筆記,只不過度享一下讓不少剛開始學習.net編程的人可以很快的學會C#語言 使用面向對象 (1) 首先寫一個類,來描述對象 (2)使用這個類實例化對象 (3)使用這個對象 類 (1) 就是用來描述對象的模板 1)經過特徵 字段和屬性 2)行爲,能力 方法 class Cup { //類的成員 //特徵 public int Volume; public int height; public string mater; //行爲 public void PackAble() { Console.WriteLine("我能夠裝水"); } } 實例化: static void Main(string[] args) { Cup cup = new Cup(); cup.Volume = 200; cup.height = 15; cup.mater = "玻璃"; cup.PackAble(); Console.ReadKey(); } 構造方法 (1) 爲字段賦初值 語法:[public] 類名(參數) { //成員及執行方法 } public void DisPlay() { Console.WriteLine("我是一個{0}ml,高爲{1}Cm,用{2}材料作的杯具", volume, height, mater); } public Cup(int volume, int height, string mater) { this.volume = volume; this.height = height; this.mater = mater; } //執行 static void Main(string[] args) { Cup cup = new Cup(300, 20, "玻璃"); cup.DisPlay(); Console.ReadKey(); } (2)若是寫類的時候沒有提供構造方法,系統會自動的提供一個無參構造方法 (3)若是添加了自定義的構造方法,那麼系統不會在添加無參構造方法屬性 屬性 (1) 就是限制字段訪問並提供字段訪問方法的一個數據類型 (2)屬性就是方法 (3)get表示獲取值得那個方法 (4)set表示設置那個值得方法 class Cup { //字段 private int volume; private int height; private string mater; //屬性 public int Volume { get { return volume; } set { if (value 0) { volume = value; } else { Console.WriteLine("容量不能小於0"); } } } } //執行 static void Main(string[] args) { Cup cup = new Cup(); cup.Volume = 100; Console.WriteLine(cup.Volume); Console.ReadKey(); } (5)自動屬性 等價於一個字段+get,set屬性(屬性中無任何邏輯處理) 語法:public 返回類型 屬性名{get;set;} public string Name { get; set; } 執行: Person p = new Person(); p.Name = "韓迎龍"; Console.WriteLine(p.Name); Console.ReadKey(); (6)屬性不具有存儲數據的能力,存儲數據是存儲在字段裏面的 (7)提供get表示能夠獲得字段的數據(只讀屬性) (8)提供set表示能夠爲字段賦值(只寫屬性) (9)提供get,set則表示可讀可寫屬性繼承 電子計算器 (1) 首先創建一個Calculator類,在這個類裏面實現了計算的方法 class Calculator { private int num1; private int num2; private string oper; public int Num1 { get { return num1; } set { num1 = value; } } public int Num2 { get { return num2; } set { num2 = value; } } public string Oper { get { return oper; } set { oper = value; } } public int Calculating() { int res = 0; switch (oper) { case "+": res = num1 + num2; break; case "-": res = num1 - num2; break; case "*": res = num1 * num2; break; case "/": res = num1 / num2; break; } return res; } } (2)在Main方法中實現輸出信息 static void Main(string[] args) { //找到對象 Calculator cal = new Calculator(); //輸入數字與運算符 Console.Write("請輸入第一個數字:"); cal.Num1 = GetInputNum(); Console.Write("請輸入第一個數字:"); cal.Num2 = GetInputNum(); Console.Write("請輸入運算符:"); cal.Oper = Console.ReadLine(); //使用對象的計算方法 int res = cal.Calculating(); //獲得結果 Console.WriteLine("{0}{1}{2}={3}", cal.Num1, cal.Oper, cal.Num2, res); Console.ReadKey(); } public static int GetInputNum() { return GetInputNum(int.MinValue, int.MaxValue); } /// summary /// 完成int類型數據的輸入,並返回,要求輸入的數字在0到給定的數字之間 /// /summary /// param name="max"給定的數字的上限/param /// returns/returns public static int GetInputNum(int max) { return GetInputNum(0, max); } /// summary /// 完成int數字的輸入,要求在給定範圍之間 /// /summary /// param name="min"給定範圍的下線/param /// param name="max"給定範圍的上線/param /// returns/returns public static int GetInputNum(int min, int max) { string str = Console.ReadLine(); int num; while (true) { try { num = Convert.ToInt32(str); if (num min num max) { break; } Console.Write("輸入數字再也不{0}到{1}之間,請從新輸入", min, max); str = Console.ReadLine(); } catch { Console.Write("輸入有誤,請從新輸入"); str = Console.ReadLine(); } } return num; } 繼承 (1) 有一個學生,老師和校長作自我介紹 1)將學生,老師和校長都有的特徵先"打包" 2)再寫學生,老師和校長的時候將這個"包"導入進來 3)經過繼承來實現 4)寫一個父類 5)再寫子類的時候調用父類 -首先寫一個父類Person,實現他們三個都有的方法 class Person { private string name; private int age; private char gender; public string Name { get { return name; } set { name = value; } } public int Age { get { return age; } set { age = value; } } public char Gender { get { return gender; } set { gender = value; } } public void SayHi() { Console.Write("你好,我是{0},今年{1}歲了,我是{2}的", name, age, gender); } } -而後寫Student類 class Student : Person { private string classname; private string hobby; public string Classname { get { return classname; } set { classname = value; } } public string Hobby { get { return hobby; } set { hobby = value; } } public void SayHello() { SayHi(); Console.WriteLine(",個人班級是{0},個人愛好是{1}", classname, hobby); } } -寫Main函數 static void Main(string[] args) { Student stu = new Student(); stu.Name = "韓迎龍"; stu.Age = 23; stu.Gender = '男'; stu.Classname = ".net"; stu.Hobby = "編程"; stu.SayHello(); Console.ReadKey(); } -其他兩個類(老師和校長基本同樣) (2)構造方法實現傳參 public Student(string name, int age, char gender, string classname, string hobby) { this.Name = name; this.Age = age; this.Gender = gender; this.classname = classname; this.hobby = hobby; } Student stu = new Student("韓迎龍", 23, '男', ".net", "編程"); stu.SayHello(); Console.ReadKey(); (3)在建立子類的時候會默認的調用父類的無參構造方法 1)建立對象的時候構造方法的執行順序 (4)爲何使用繼承 1)代碼重用 2)實現多態(里氏轉換原則) (5)繼承的特徵 1)單根行 2)傳遞性 3)派生於object類型 註釋:寫類的時候字段的順序,成員方法的順序是不用考慮的,在一個項目中類型的順序也是不用考慮的 訪問修飾符 (1) protected 1)表示受保護的字段,在本類和子類中能夠訪問 (2)this 1)指定當前類提供的成員 2)能夠調用本類的構造方法 public 類名() { //代碼1 } public 類名(string str) :this() { //代碼1 //代碼2 } 舉例說明: class MyClass { public MyClass() { Console.WriteLine("我沒有參數"); } public MyClass(string str) : this() { Console.WriteLine("我是字符串{0}", str); } static void Main(string[] args) { MyClass mc = new MyClass("韓迎龍"); Console.ReadKey(); } } (3)base 1)調用父類構造方法 2)指定父類提供的成員 1使用類庫實現方法 (1)類名與命名空間至少有一個要記得 (2)每次使用的時候能夠添加引用便可