属性的本质:就是对类中的变量的属性(只读、只写、读写)进行控制。
属性也可以看成“变量”。
1. 普通属性
class A {
privateint a;
privateint b;
public int aA
{
get{
returna;//可以return表达式或者其他
}
set
{
a = value;//value就是属性赋值时,右边的值
}
}
public int aB {
set{
b = value;
}
}
}
MAIN
A mya = new A();
mya.aA = 3;//隐式调用了set{}
System.Console.WriteLine(mya.aA);//隐式调用了get{}
2. 抽象属性
public abstract class A {
public abstract int aA
{
get;
set;
}
}
public class B : A
{
private int f;
public override int aA {
get {
return f;
}
set {
f = value;
}
}
}
class Program
{
static void Main(string[] args)
{
A mya = newB();
mya.aA = 3;
System.Console.WriteLine(mya.aA);
}
}
条件:
1. 基类必须为抽象基类
2. 基类中的属性必须是抽象的
3. 子类中的定义属性是必须有override
可以看出,抽象属性定义在抽象类中,它不与变量关联。和多态类似,相当于使得:父类拥有可以访问或修改子类变量的权利。或者说,给父类增加一个“变量”。