全面解析C#構造函數 超詳細 包括繼承類時使用base方法

我們在寫一個類的時候,會遇到構造函數這個問題。
也許聽起來很簡單,但是不會用卻是很頭痛的一件事。
本文全程配圖
首先我們定義一個類

//剛創的QMsg類是這樣的
public class QMsg
{
}
//但是實際上他是這樣的
public class QMsg
{
		public QMsg(){}  // 這就是默認構造函數
}

QMsg這個類,那麼QMsg裏面會有一個你看不見的默認構造函數。

接下來,我們用一個新的類去繼承QMsg類
在這裏插入圖片描述
繼承大家都知道把,這裏就不解釋了

然後創建一個lobbyListMod的構造的函數(注意,現在lobbyListMod也有一個你看不見的函數)
在這裏插入圖片描述
其實內部就是這樣(沒顯示而已),好,那麼我們開始做操作了。
創建一個Test測試類,去實例化一個lobbyListMod類出來
在這裏插入圖片描述
如果你在內部自己寫了一個構造函數,無參的就沒影響(因爲你不寫系統會幫你寫),如果是有參的,就如下圖

在這裏插入圖片描述
錯誤提示:沒有提供必須的參數“a”
因爲你寫了一個有參的構造函數,那麼原來的那個無參的構造函數,系統就不會再幫你了,所以你就要自己寫一個
在這裏插入圖片描述
到這裏,這個就告一段落了,下面是繼承QMsg的,先看兩圖
在這裏插入圖片描述

在這裏插入圖片描述
這兩圖的效果是一樣的,現在我們在QMsg裏面添加兩個構造函數

public class QMsg
{
	//默認無參構造函數
	public QMsg()
	{
		Console.WriteLine("會先調用這裏:這是父類構造函數,之後再調用子類的構造函數");
	}
	//有參構造函數
	public QMsg(int num)
	{
		  Console.WriteLine("值:"=num);
	}
}

現在我們重新調用,這次調用有參的
在這裏插入圖片描述
這樣調用的就是父類中帶參數的構造方法了,而不再是無參的構造方法了。
先輸出,父類的結果,再輸出子類的結果(如果你還是不懂,去看一眼繼承,再回來看,就能看懂了)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章