在C#中,用abstract修饰符来表示抽象类,即类是不完整的,使用时需要注意一下三点:
(1)抽象类只能用作基类,也就是说抽象类不能直接实例化,对抽象类使用new运算符时编译时会出现错误。
(2)抽象类中可以定义抽象方法(用abstract修饰),所谓抽象方法就是只有声明而无具体任何具体实现的细节方法。
(3)抽象类中允许(不限制必须)一个或者多个定义抽象方法或抽象属性。但若抽象类中有抽象方法,则当从抽象类派生非抽象类时,这些非抽象类必须具有实现所继承的所有抽象成员,即重写(override)那些对象成员。
示例代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace 抽象方法和抽象类
{
abstract class Plant //定义抽象基类
{
public abstract void Area(); //定义抽象方法area
}
class Rectangle:Plant
{
float lg;
float wh;
double ar;
public Rectangle(float l,float w) //定义构造函数,对长和宽进行初始化
{
lg = l;
wh = w;
}
public override void Area() //覆盖基类中的虚方法,计算输出矩形面积
{
ar = lg * wh;
Console.WriteLine("The Area of Rectangle is :" + ar);
}
}
class Triangle:Plant
{
float hem;
float high;
double ar;
public Triangle(float h,float hi)
{
hem = h;
high = h;
}
public override void Area()
{
ar = 0.5 * hem * high;
Console.WriteLine("The Area of Triangle is :" + ar);
}
}
class Program
{
static void Main(string[] args)
{
Rectangle rec = new Rectangle(6, 5);
Triangle tri = new Triangle(6, 5);
rec.Area();
tri.Area();
}
}
}