C#中的抽象类和方法






2.46/5 (17投票s)
2006 年 6 月 16 日

98795

625
对C#中抽象类和方法的详细分析。
引言
对 C# 中抽象类和方法的详细分析,并提供了一些具体的例子。
在 C# 中,可以使用 `abstract` 关键字来声明类和方法为抽象。
我们无法初始化的类被称为抽象类。它们只提供部分实现。但另一个类可以从抽象类继承,并创建它们的实例。你需要使用 `abstract` 修饰符标记没有实现的类成员。你还需要将包含此类成员的类标记为抽象。 具有抽象成员的类不能使用 `new` 运算符实例化。你可以从抽象基类派生抽象类和非抽象类。接口默认是抽象的。
它们不能被实例化,必须由非抽象类实现。因此,你不能将接口及其成员标记为抽象。你不能将 `abstract` 修饰符与其他继承修饰符 `final` 结合使用。你不能将这些继承修饰符(`abstract` 和 `final`)中的任何一个与 `static` 修饰符结合使用。
请参阅下面的例子:
示例 1
namespace Abstract
{
/// <summary>
/// an abstract class with a non-abstract method
/// </summary>
abstract class MyAbs
{
public void NonAbMethod()
{
Console.WriteLine("Non-Abstract Method");
}
}
class MyClass : MyAbs
{
}
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
//MyAbs mb = new MyAbs();//not possible to create an instance
MyClass mc = new MyClass();
mc.NonAbMethod(); // Displays 'Non-Abstract Method'
}
}
}
namespace Abstract2
{
/// <summary>
/// An abstract method is a method without any method body.
/// They are implicitly virtual in C#.
/// </summary>
abstract class MyAbs
{
public void NonAbMethod()
{
Console.WriteLine("Non-Abstract Method");
}
public abstract void AbMethod(); // An abstract method
}
class MyClass : MyAbs//must implement base class abstract methods
{
public override void AbMethod()
{
Console.WriteLine("Abstarct method");
}
}
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
MyClass mc = new MyClass();
mc.NonAbMethod();
mc.AbMethod();
}
}
}
更多示例,请参阅附件。