C#构造函数-创建对象
构造函数(constructor)⽤于执⾏类的实例的初始化。每个类都有构造函数。C#中通过new关键字创建对象的过程其实就是通过new关键字调⽤类的构造函数的过程。创建对象时,必须调⽤构造函数,如果没有定义构造函数,系统会提供⼀个默认的构造函数。
在访问⼀个类的时候,系统将最先执⾏构造函数中的语句,任何构造函数的执⾏都隐式的调⽤了系统提供的默认构造函数base(),可以有参数,也可以没有。有参数的时候,类在实例化的时候必须传递参数。
构造函数是类中的特殊⽅法,C#使⽤构造函数来初始化变量。创建构造函数的语法如下:
class 类名
{
<;访问修饰符> 类名()
{
//构造函数主体
}
}
构造函数的定义规则:
(1)C# 语⾔的构造函数的名称必须与类名相同。
(2)构造函数没有返回值。它可以带参数,也可以不带参数。
(3)声明类对象时,系统⾃动调⽤构造函数。在构造函数中不要做对类的实例进⾏初始化以外的事情,也不能被显式地调⽤。writeline函数
(4)构造函数可以重载,从⽽提供初始化类对象的不同⽅法;
(5)若在声明时未定义构造函数,系统会⾃动⽣成默认的构造函数,此时构造函数的函数体为空。
(6)静态构造函数,⽤static修饰,⽤于初始化静态变量,⼀个类只允许有⼀个构造函数,在类实例化时加载,这时修饰符public、private失去作⽤。
(7)构造函数可以使⽤public、protected、private修饰符。⼀般地,构造函数总是public 类型的。privat
e 类型的构造函数表明类不能被实例化,通常⽤于只含有静态成员的类。
(8)引⽤⽗类构造时⽤():base()⽅法,引⽤⾃⾝重载的构造使⽤():this(int para)。
(8)⼀个构造函数的返回类型是这个类的⼀个实例,⽽⼀个普通⽅法的返回类型可以是任何类型。
注意:
1、定义了⼀个带参构造函数后,⼀定要定义⼀个⽆参构造函数,这样可以避免⼦类调⽤时出错。
2、调⽤基类构造函数:base() 或:base(参数列表) 调⽤本类其它构造函数:this() 或:this(参数列表)
3、只有在⽤base显⽰调⽤⽗类的构造函数时,程序才不会默认的调⽤不带参数的构造函数。
下⾯这种构造函数不接受任何参数,称为⽆参数构造函数。
1. classTestClass
2. {
3. publicTestClass(): base() {} // 由CLR提供
4. }
5.
6.
7.
下⾯的代码说明了构造函数的声明⽅式:
// 构造对象时将执⾏构造函数
using System;
public class Dog
public string name;
public Dog() // 声明构造函数
{
this.name = "未知";
Console.WriteLine("Dog():Dog类已被初始化。");
}
public static void Main()
{
Dog myDog = new Dog(); // 会调⽤构造函数
Console.WriteLine("myDog的名字为“{0}”。);
}
}
在访问⼀个类的时候,系统将⾸先执⾏构造函数中的语句。构造函数的功能是创建对象,使对象的状态合法化。在从构造函数返回之前,对象都是不确定的,不能⽤于执⾏任何操作;只有在构造函数执⾏完成之后,存放对象的内存块中才存放这⼀个类的实例。
说明:成员变量使⽤了this关键字,在这⾥this代表当前实例。使⽤this关键字编码时可以有效防⽌变量名输⼊错误。
上述代码的执⾏结果如下:
Dog():Dog类已被初始化。
myDog的名字为“未知”。
显然,在创建对象时执⾏了构造函数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论