C#基础知识整理:基础知识(3) 类的构造
我们定义了YSchool,YTeacher类,实例化对象时:
[csharp]
YSchool shool1 = new YSchool();
shool1.ID = 1;
shool1.Name = "清华附中";
YSchool school2 = new YSchool();
school2.ID = 2;
school2.Name = "北师大附中";
YSchool shool1 = new YSchool();
shool1.ID = 1;
shool1.Name = "清华附中";
YSchool school2 = new YSchool();
school2.ID = 2;
school2.Name = "北师大附中";
这样写对不对呢,其实在逻辑上是不正确的,因为实例化对象时,它的属性应该是和实例化一起就有的,而不是后来再加属性。在程序中表现就是,属性要有初值。
所以,在类中就要有这样一个方法,无返回类型,方法名和类名相同,有参数类表或者没有参数列表。它就是构造方法,俗称“构造器”或“构造函数”。一个类中可以有一个或多个构造函数,当然有时你没写构造函数,这并不代表这个类就没有构造函数,它依然有一个默认的构造函数的。如果使多个构造函数的话,它们各自的参数列表必须不同。
下面以YSchool为例完善这个类。
[csharp]
/// <summary>
/// YSchool类的id和name是它的固有属性,它的值应该是确定的。
/// 实例化的同时对属性赋初值,用到构造函数。
/// </summary>
public class YSchool
{
private int id = 0;
private string name = string.Empty;
public int ID
{
get
{
return this.id;
}
}
public string Name
{
get
{
return name;
}
}
/// <summary>
/// 没有参数的构造器称之为“默认构造器”;如果没有写一个构造器,那么
///系统也会提供一个默认的构造器,所以说类至少有一个构造器;
///当然,如果系统提供的默认构造函数,则属性初值为声明时赋的初值,如果声明
///未赋初值,则是“类型默认值”,比如0或者null。
/// </summary>
public YSchool()
{
this.id = 0;
this.name = @"清华附中";
}
/// <summary>
/// 带有参数列表的构造函数,
/// 属性的值就是传入的列表的值。
/// </summary>
/// <param name="id"></param>
/// <param name="name"></param>
public YSchool(int id, string name)
{
this.id = id;
this.name = name;
}
public YSchool(int id)
{
this.id = id;
this.name = @"陕科大附中";
}
}
/// <summary>
/// YSchool类的id和name是它的固有属性,它的值应该是确定的。
/// 实例化的同时对属性赋初值,用到构造函数。
/// </summary>
public class YSchool
{
private int id = 0;
private string name = string.Empty;
public int ID
{
get
{
return this.id;
}
}
public string Name
{
get
{
return name;
}
}
/// <summary>
/// 没有参数的构造器称之为“默认构造器”;如果没有写一个构造器,那么
///系统也会提供一个默认的构造器,所以说类至少有一个构造器;
///当然,如果系统提供的默认构造函数,则属性初值为声明时赋的初值,如果声明
///未赋初值,则是“类型默认值”,比如0或者null。
/// </summary>
public YSchool()
{
this.id = 0;
this.name = @"清华附中";
}
/// <summary>
/// 带有参数列表的构造函数,
/// 属性的值就是传入的列表的值。
/// </summary>
/// <param name="id"></param>
补充:软件开发 , C# ,