全面解析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);
	}
}

现在我们重新调用,这次调用有参的
在这里插入图片描述
这样调用的就是父类中带参数的构造方法了,而不再是无参的构造方法了。
先输出,父类的结果,再输出子类的结果(如果你还是不懂,去看一眼继承,再回来看,就能看懂了)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中的构造函数是用于创建和初始化类的实例的特殊方法构造函数的名称与类名相同,并且没有返回类型。在创建类的对象时,构造函数会自动调用。 继承是面向对象编程中的一个重要概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。在C#中,使用冒号(:)来指定一个类继承自另一个类。 当子类继承父类时,子类会自动继承父类构造函数。子类可以通过调用父类构造函数来初始化从父类继承的成员变量和属性。在子类的构造函数使用关键字base来调用父类构造函数。 下面是一个示例代码,演示了C#构造函数继承的用法: ```csharp // 父类 class Animal { public string Name { get; set; } // 父类构造函数 public Animal(string name) { Name = name; } } // 子类 class Dog : Animal { public string Breed { get; set; } // 子类的构造函数 public Dog(string name, string breed) : base(name) { Breed = breed; } } // 使用 Dog myDog = new Dog("旺财", "哈士奇"); Console.WriteLine($"Name: {myDog.Name}, Breed: {myDog.Breed}"); ``` 在上面的示例中,Animal类有一个构造函数,接受一个name参数来初始化Name属性。Dog类继承自Animal类,并且有一个额外的属性Breed。Dog类的构造函数使用base关键字调用父类构造函数来初始化从父类继承的Name属性,然后再初始化自己的Breed属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值