abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
在此例中,类 Square
必须提供 Area
的实现,因为它派生自 ShapesClass
:
| 复制代码 |
---|
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int x, y;
// Not providing an Area method results
// in a compile-time error.
public override int Area()
{
return x * y;
}
} |
有关抽象类的更多信息,请参见抽象类、密封类及类成员(C# 编程指南)。
备注
示例
在本例中,DerivedClass
类是从抽象类 BaseClass
派生的。抽象类包含一个抽象方法 AbstractMethod
和两个抽象属性 X
和 Y
。
| 复制代码 |
---|
// abstract_keyword.cs
// Abstract Classes
using System;
abstract class BaseClass // Abstract class
{
protected int _x = 100;
protected int _y = 150;
public abstract void AbstractMethod(); // Abstract method
public abstract int X { get; }
public abstract int Y { get; }
}
class DerivedClass : BaseClass
{
public override void AbstractMethod()
{
_x++;
_y++;
}
public override int X // overriding property
{
get
{
return _x + 10;
}
}
public override int Y // overriding property
{
get
{
return _y + 10;
}
}
static void Main()
{
DerivedClass o = new DerivedClass();
o.AbstractMethod();
Console.WriteLine("x = {0}, y = {1}", o.X, o.Y);
}
} |
输出
注释
在上面的示例中,如果试图通过使用下面的语句将抽象类实例化:
| 复制代码 |
---|
BaseClass bc = new BaseClass(); // Error |
将出现错误,指出编译器无法创建抽象类“BaseClass”的实例。
C# 语言规范
有关更多信息,请参见 C# 语言规范中的以下各章节:
-
1.6.5.4 虚方法、重写方法和抽象方法
-
10.1.1.1 抽象类
请参见