一.C#關鍵字擴充解釋: 1. new : 1)開闢空間 2)調用構造 3)實例化對象 2. this: 當前類的實例,用來區分入參和成員變數 3. void void修飾的方法表示返回值類型為空,並不代表沒有返回值 二.構造方法: 1.構造函數 特點: 方法名與類名相同 沒有返回值類型 主要完成對 ...
一.C#關鍵字擴充解釋:
1. new :
1)開闢空間
2)調用構造
3)實例化對象
2. this:
當前類的實例,用來區分入參和成員變數
3. void
void修飾的方法表示返回值類型為空,並不代表沒有返回值
二.構造方法:
1.構造函數
特點:
方法名與類名相同
沒有返回值類型
主要完成對象的初始化工作
註:不能將構造函數定義為void
根據普遍的經驗,我們在進行開發時,一般不在構造函數中進行類的初始化以外的事情,不要嘗試顯示地調用構造函數
2.無參構造
語法:
訪問修飾符 類名() { //方法體 }
代碼示例:
public Book() { }
3.帶參構造函數
語法:
訪問修飾符 類名(參數列表) { //方法體 }
參數列表一般用來給類的屬性賦值
優點:
靈活性更好
通過參數來動態控制對象的特征
示例代碼:
public Book(int price, string author, string name) { //當前類的實例 ,用來 區分入參 和成員變數。 this.price = price; this.author = author; this.name = name; }
4.隱私構造函數
在沒有手動編寫構造時,系統會給我們自動生成一個無參構造
為什麼系統要自動生成無參構造?
是為了給將來給高級框架,高級框架在底層可以通過無參構造給我們的類創建對象。
三.方法重載
1.構造函數重載
public class Player { //構造函數也可以構成重載 public Player() { } public Player(int age) { } }
2.方法重載
特點:
方法名相同
方法參數類型不同或者參數個數不同
在同一個類中
需要註意,方法名及參數列表相同的方法,僅是返回值類型不同,不能稱為方法重載
public void Say() { } public string Say(int age) { return "1"; } public void Eat(int age,string name) { } public void Eat(string name, int age) { }
4.模仿Console系統類的WriteLine方法的可變參數數量傳入
public class MagicClass { //param 參數 params 參數集合 可變參數 public void Say(params object[] arg) { } }
:方法重載不僅能避免命名的麻煩,還能使調用者不必判斷方法名就可直接調用
四.對象間的交互
1.概述:
在面向對象的世界里,一切皆為對象
對象與對象相互獨立,互不幹涉,但在一定的外力的作用下,對象開始共同工作
每個類都有自己的特性和功能,我們把它們封裝為屬性和方法
對象之間通過屬性和方法進行交互
可以認為方法的參數及方法的返回值都是對象相互傳遞的消息
2.實例
//遙控器 public class Contol { public void Open(Tv tv) { tv.Open(); } public void Close(Tv tv) { tv.Close(); } public void ChangeChannel(Tv tv,string channelName) { tv.ChangeChannel(channelName); } } /// <summary> /// 電視機 /// </summary> public class Tv { //維護一個狀態 bool state = false;//關閉 public void Open() { if (state==false)//關閉的 { state = true;//狀態切換到開 機狀態 Console.WriteLine("電視機打開啦!!!!!~~~~~"); } } public void Close() { if (state == true)//開著的 { state = false;//狀態切換到關 機狀態 Console.WriteLine("電視機關閉啦!!!!!~~~~~"); } } public void ChangeChannel(string channelName) { if (state==true) { Console.WriteLine("您已經成功切換到"+channelName); } } } static void Main(string[] args) { //01.買一個電視機 Tv tv = new Tv(); //02.買一個遙控器 Contol control = new Contol(); //03.進行操作 control.Open(tv); control.ChangeChannel(tv, "鳳凰衛視"); control.Close(tv); }
經驗:
一旦程式報錯"未將對象引用設置到對象的實例",我們就可以認定某個對象沒有實例化。此時可以通過錯誤代碼找到是哪個對象沒有實例化,進行相應修改即可