C#每日一课(二十八)

40 篇文章 1 订阅

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();

运行的结果与上一例的一致
从上面的例子中可以看到,对于抽象类来说可以声明一个抽象属性,这个抽象在派生类中进行的实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值