接口是接口用户与实现接口的类之间的契约的定义。想到接口的一种方法是声明对象可以执行某些功能。
假设我们定义了一个接口IShape来表示不同类型的形状,我们希望一个形状具有一个面积,因此我们将定义一个方法来强制接口实现返回其面积:
public interface IShape { double ComputeArea(); }
我们有以下两种形状:aRectangle和aCircle
public class Rectangle : IShape { private double length; private double width; public Rectangle(double length, double width) { this.length= length; this.width= width; } public double ComputeArea() { return length * width; } } public class Circle : IShape { private double radius; public Circle(double radius) { this.radius= radius; } public double ComputeArea() { return Math.Pow(radius, 2.0) * Math.PI; } }
它们每个都有自己的区域定义,但它们都是形状。因此,IShape在我们的程序中看到它们是合乎逻辑的:
private static void Main(string[] args) { var shapes = new List<IShape>() { new Rectangle(5, 10), new Circle(5) }; ComputeArea(shapes); Console.ReadKey(); } private static void ComputeArea(IEnumerable<IShape> shapes) { foreach (shape in shapes) { Console.WriteLine("Area: {0:N}, shape.ComputeArea()); } } // 输出: // 面积:50.00 // 面积:78.54