C#属性
属性 Property,是类、结构、接口的命名成员。
类或结构中的成员变量或方法称为域(Field)。属性则是域的扩展,可以使用相同的语法进行访问。
使用访问器(accessors)可以让私有域的值被读写或操作。
属性不会确定存储位置,具有可读写或计算它们值的访问器。
- 访问器(Accessors)
属性的访问器(accessors)包含有助于获取(读取或计算)或设置(写入)属性的可执行语句。
访问器accessor声明可包含一个get访问器、一个set访问器,或者是两者都有。
使用Visual Studio新建C#控制台应用程序chapter22_003
新增一个Student类
class Student
{
private string code = "000";
private string name = "未知";
private string school = "未知";
//声明string类型的Code属性
public string Code
{
get
{
return code;
}
set
{
code = value;
}
}
//声明string类型的Name属性
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
//声明string类型的School属性
public string School
{
get
{
return school;
}
set
{
school = value;
}
}
//重写ToString方法
public override string ToString()
{
return "Code:" + code + ";" + "Name:" + name + ";" + "School:" + school;
}
}
在Main方法中加入如下代码进行测试:
//创建一个Student对象
Student stu = new Student();
//设置对象中的属性code,name,school的值
stu.Code = "20160901001";
stu.Name = "谢声";
stu.School = "西安交通大学";
Console.WriteLine("学生的信息:{0}", stu);
//修改学生的code信息后
stu.Code = stu.Code + "0001";
Console.WriteLine("学生的信息:{0}", stu);
Console.ReadKey();
编译运行后的结果如下:
- 抽象属性
抽象类中可以有抽象属性,这些抽象属性应该在派生类中被实现。
比如:
1.声明一个抽象类
public abstract class Person
{
public abstract string Name
{
get;
set;
}
}
2.声明一个子类继承于抽象类Person
class Student : Person
{
private string code = "000";
private string name = "未知";
private string school = "未知";
//声明类型为string的Code属性
public string Code
{
get
{
return code;
}
set
{
code = value;
}
}
//声明类型为string的Name属性
public override string Name
{
get
{
return name;
}
set
{
name = value;
}
}
//声明类型为string的School属性
public string School
{
get
{
return school;
}
set
{
school = value;
}
}
//重写ToString方法
public override string ToString()
{
return "Code:" + code + ";" + "Name:" + name + ";" + "School:" + school;
}
}
3.在Main方法中加入如下代码进行测试:
//创建一个Student对象
Student stu = new Student();
//设置对象中的属性code,name,school的值
stu.Code = "20160901001";
stu.Name = "谢声";
stu.School = "西安交通大学";
Console.WriteLine("学生的信息:{0}", stu);
//修改学生的code信息后
stu.Code = stu.Code + "0001";
Console.WriteLine("学生的信息:{0}", stu);
Console.ReadKey();
运行的结果与上一例的一致
从上面的例子中可以看到,对于抽象类来说可以声明一个抽象属性,这个抽象在派生类中进行的实现。