在C#中可以定义抽象类作为基类。抽象类是指只能作为基类使用的类。抽象类用于创建派生类,本身不能实例化,也就是不能创建对象。抽象类使用关键字absteract修饰。
抽象类定义格式如下:
abstract class 类名 { 类成员定义 }
抽象类中的成员可以是抽象成员,也可以是非抽象成员。可以从抽象类派生新的抽象类,也可以派生出非抽象类。如果派生类是非抽象类,那么该派生类必须实现基类中所有抽象成员。
抽象方法:
抽象方法只存在于抽象类的定义中,非抽象类中不能包含抽象方法
抽象方法的定义格式为:
访问修饰符 abstract 返回值类型 方法名(参数表);
抽象方法使用关键字abstra修饰,只需要给出方法的函数头部分,一分号结算。注意,抽象方法不包含实现部分,没有函数的花括号部门。如果给出花括号,则出错。
抽象类与抽象方法实例:
class Program
{
static void Main(string[] args)
{
S s1 = new S();
s1.Test(3);
Console.ReadKey();
}
}
abstract class T
{
public abstract void Test(int x);
}
class S : T
{
public override void Test(int x)
{
Console.WriteLine($"x={x}");
}
}
程序输出结果为: x=3;
派生类S中需要重写抽象类中的抽象方法Test,因此使用override关键字。注意,类T是抽象类。如果使用new T(),将出错。
如果希望基类中的一个方法要包含在所有派生类中,可以将基类定义为抽象类,将该方法定义为抽象方法,则基类的所有派生类的所有派生类的定义中都必须重写实现该方法。