使用abstract申明抽象类,抽象类不能被实例化;
使用sealed关键字申明密封类,不可从此类派生其他的类;
下面以计算各类图形的面积为例:
这是计算圆的类(是一个密封的类):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shape
{
public sealed class Circle:shape
{
private double radium;
public Circle (double r)
{
radium = r;
}
public override double calculateArea()
{
return Math.PI * radium * radium;
}
}
}
矩形的类(密封):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shape
{
public sealed class Rectangle:shape
{
private double length, width;
public Rectangle (double l,double w)
{
length = l;
width = 1;
}
public override double calculateArea()
{
return length * width;
}
}
}
三角形的类(密封):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shape
{
public sealed class Triangle:shape
{
private double edge, high;
public Triangle(double e, double h)
{
edge = e;
high = h;
}
public override double calculateArea()
{
return edge * high / 2;
}
}
}
基类(抽象的):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shape
{
public abstract class shape
{
public abstract double calculateArea();
}
}
主函数(调用这些类):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shape
{
class Program
{
static void Main(string[] args)
{
shape s;
s = new Triangle(12.0,5.6);
printArea(s);
s = new Rectangle(10.0, 8.1);
printArea(s);
s = new Circle(3.9);
printArea(s);
Console.ReadLine();
}
static void printArea(shape s)
{
Console.WriteLine("这个图形是" + s.GetType().ToString());
Console.WriteLine("图形面积是" + s.calculateArea().ToString());
}
}
}