我们在写一个类的时候,会遇到构造函数这个问题。
也许听起来很简单,但是不会用却是很头痛的一件事。
本文全程配图
首先我们定义一个类
//刚创的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);
}
}
现在我们重新调用,这次调用有参的
这样调用的就是父类中带参数的构造方法了,而不再是无参的构造方法了。
先输出,父类的结果,再输出子类的结果(如果你还是不懂,去看一眼继承,再回来看,就能看懂了)