回忆一下
abstract类
大学时候学习的abstract类。它的逻辑大致是这样的,人是abstract,而男人和女人实实在在的存在的。abstract类中的函数只是一个声明并没有实现,也不让它实现。
正文
abstract修饰符表明被修饰的类缺少实现。abstract修饰符可以用来修饰类、方法、属性、索引器、事件。在类声明处使用abstract修饰符表明这个类打算成为其他类的基类。标记为抽象或包含在抽象类的成员必须通过从抽象类派生的类来实现。
例如,Square类必须实现Area,因为他派生自ShapesClass。
`abstract class ShapesClass
{
abstract public void Area();
}
class Square : ShapesClass
{
/// <summary>
/// 边
/// </summary>
public int area
{ get ; set ; }
public int Side
{ get ; set ; }
Square( int side)
{
Side = side;
}
public override void Area()
{
area = Side * Side;
}
static void Main()
{
Square a = new Square(12);
a.Area();
Console .WriteLine(a.area);
Console .ReadKey();
}
}
`
抽象类有以下特点:
1. 抽象类不能被实例化
2. 抽象类可能包含着抽象方法和抽象访问器
3. 不能用sealed修饰符一个抽象类,因为两个修饰符是相反的意思。sealed修饰符防止一个类被实例化而avstract修饰符需要一个类去实例化。
4. 一个派生自抽象类的非抽象类必须实现其包含的所有继承的抽象方法和访问器。
在方法和属性声明处使用abstract修饰符去指明这个方法和属性不包含实现。
抽象方法有以下特点:
1. 一个抽象方法是一个隐含的虚函数
2. 抽象方法声明只允许在抽象函数中
3. 因为一个抽象函数声明不提供实现,没有函数体,方法声明以分号结束;没有大括号。
4. 实现中要有override
5. 在抽象类中使用static或virtual是错的
6. 在静态属性中使用abstract是错误的
7. 抽象继承属性可以在派生类中重写,通过使用override。