- 抽象类不能实例化,抽象方法不能有代码实现
- 子类必须实现基类的抽象方法,若子类仍为抽象类除外
- 抽象方法必须在抽象类中,抽象方法不能申明为 private
- abstract 与 override 搭配
- 抽象类构造函数应为 protected 或 private
virtual与 abstract
当子类需要实现共同的方法时,用 virtual,在子类使用 base.method() 调用当子类需要实现不用方法时,用 abstract
abstract class A
{
protected string _name;
// 构造函数必须为 protected 或 private
protected A() {}
// 构造函数不为abstract ,且可以有代码实现
protected A(string name)
{
_name = name;
}
// abstract 方法不能有代码实现
public abstract void f();
protected int _x;
// abstract 属性不能有代码实现
public abstract int X
{
get;
set;
}
}
class B : A
{
// 子类继承构造函数
public B(string name) : base(name) { }
//子类重载实现方法
public override void f()
{
}
//子类重载实现属性
public override int X
{
get
{
return _x;
}
set
{
_x = value;
}
}
}