虚拟成员或者抽象成员不能是私有的
抽象方法是用abstract修饰的方法
抽象方法是不能含有方法体的
抽象方法可以是public 和protected
抽象类中可以写抽象方法
抽象方法必须在抽象类中
抽象类中可以写实例方法
抽象类是一个不完全抽象的类
抽象类是无法进行实例化的
这是一个父类,由abstract关键字修饰
abstract class Shape
{
public Shape()
{
}
public abstract double Area();
public abstract double Prime();
}
这是一个矩形类,继承抽象类Shape,重写抽象类中的抽象方法
class Rectangle : Shape
{
public double a { get; set; }
public double b { get; set; }
public Rectangle(double a, double b)
{
this.a = a;
this.b = b;
}
public override double Area()
{
return a*b;
}
public override double Prime()
{
return (a+b)*2;
}
}
这是一个圆类,继承抽象类Shape,重写抽象类中的抽象方法
class Circle : Shape
{
public double r { get; set; }
public Circle(double r)
{
this.r = r;
}
public override double Area()
{
return Math.PI*r*r;
}
public override double Prime()
{
return 2*Math.PI*r;
}
}
主程测试:
static void Main(string[] args)
{
Shape[] shapes = new Shape[4];
shapes[0] = new Rectangle(3,4);
shapes[1] = new Circle(3);
shapes[2] = new Rectangle(3, 4);
shapes[3] = new Circle(4);
for (int i = 0; i < shapes.Length; i++)
{
Console.WriteLine("面积是{0:.00}\t周长是{1:.00}",shapes[i].Area(),shapes[i].Prime());
Console.WriteLine("**************************");
}
Console.ReadKey();
}