构造函数
本文提供全流程,中文翻译。
Chinar 坚持将简单的生活方式,带给世人!
(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) |
Chinar —— 心分享、心创新!
助力快速理解 构造函数的用法、详解
为新手节省宝贵的时间,避免采坑! |
全文高清图片,点击即可放大观看 (很多人竟然不知道)
1
Constructor —— 构造函数
Constructor 构造函数,基本用法是在类对象声明的时候完成初始化工作
我们以 C# 为例:来简单了解一下构造函数的声明方式
![举个栗子黑白88]()
class Chinar
{
private int a = 1;
private int b = 1;
private string c = "Chinar";
private object d = 666;
public Chinar() //声明一个名称与类名一样的函数,就是构造函数(可以传你所需要的参数,写你所需的方法)
{
}
public Chinar(int a, int b, string c, object d)
{
}
}
2
Fu —— 测试类:Fu
如何用构造函数完成初始化工作
用下面两个例子完全说明
类:Fu 中有多个构造函数,在声明类对象时,如果调用构造函数,会对其内部私有变量进行初始化操作
![举个栗子黑白88]()
class Fu
{
private int x;
public Fu()
{
Console.WriteLine("会先调用这里:这是父类");
}
public Fu(int x)
{
this.x = x;
Console.WriteLine("x赋值完成");
}
public Fu(int x, int b, string c)
{
this.x = x;
Console.WriteLine("x赋值完成" + x + b + c);
}
public Fu(int a, int a1, int a2, int a3, int a4, int a6, int a5)
{
Console.WriteLine("最长参数构造运行");
Console.WriteLine(a + "|" + a1 + "|" + a2 + "|" + a3 + "|" + a4 + "|" + a5 + "|" + a6 + "|");
this.a = a;
this.a1 = a;
this.a2 = a;
this.a3 = a;
this.a4 = a;
this.a5 = a;
this.a6 = a;
}
private int a;
private int a1;
private int a2;
private int a3;
private int a4;
private int a5;
private int a6;
}
3
Derived —— 派生类继承自:Fu
书写这个派生类,是为了让新手明白在复杂情况下 base 的具体作用及用法
类: Derived 继承 Fu 类
base :具体作用
当我们没有在子类构造函数中 写上 base(),默认会先调用父类中无参的构造函数,再调用子类
当在有参构造函数后写上base时,只调用子类构造函数中有参的构造函数,隐藏父类无参构造函数
![举个栗子黑白88]()
class Derived : Fu
{
public Derived() //: base() //重新构造 :调用父类中无参的构造函数
{
Console.WriteLine("这是派生类-无参-构造函数");
}
private int y;
public Derived(int x, int y) /*: base(x)*/
{
this.y = y;
Console.WriteLine("这是y赋值完成");
}
public Derived(int x, string a) : base(x, x, x, x, x, x, x) //这里写了 base 会先调用父类,再调用当前子类进行构造
{
y = x;
Console.WriteLine(a + "第三方法");
}
4
Initialize Constructor —— 初始化,调用构造
实例化类对象,并调用不同构造函数,去构造初始化对象
系统会根据参数的不同,进行不同的构造函数,从而达到初始化效果
![举个栗子黑白88]()
class Program
{
static void Main(string[] args)
{
Derived d = new Derived();
Console.WriteLine("-----------------------以上为无参构造------------------------------------------");
Derived d1 = new Derived(1, 2);
Console.WriteLine("-----------------------以上为2个参数构造---------------------------------------");
Derived d2 = new Derived(1, "1");
Console.WriteLine("-----------------------以上为2个参数构造,6个私变量----------------------------");
Console.ReadLine();
}
}
输出结果:
--
-----------------------------------------------------------------
--------------------------------------------------------------
---------------------------------------------------
支持
May Be —— 搞开发,总有一天要做的事!
拥有自己的服务器,无需再找攻略!
Chinar 提供一站式教程,闭眼式创建!
为新手节省宝贵时间,避免采坑! |
先点击领取 —— 阿里全产品优惠券 (享受最低优惠)
1 —— 云服务器超全购买流程 (新手必备!)
2 —— 阿里ECS云服务器自定义配置 - 购买教程(新手必备!)
3—— Windows 服务器配置、运行、建站一条龙 !
4 —— Linux 服务器配置、运行、建站一条龙 !
技术交流群:806091680 ! Chinar 欢迎你的加入
END
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址