【一起学习C#】接口

何为接口?

想想现实中的接口,电脑有好多插口,可以充电,可以上网,可以扩展键盘鼠标等等,每一个插口都是一个独立的功能,互不影响,你的电脑没鼠标,但是任然可以充电。每个插口对于用户来说只能看到插口的形状,插口内部的线路不可见。
程序中的接口也是如此。类似于抽象类,在其中只写方法头或属性头,不实现具体内容。但是却可以多继承。
任然使用之前抽象类的例子,我现在想要扩充一个周长功能,椭圆和圆都有周长,但是我为了程序安全,不改变原有类的代码,如何实现呢?
我们来使用接口实现。
代码如下:

  • 关键字:interface
  • 命名建议:接口名最好以I开头
interface IPerimeter//周长接口
    {
        double Perimeter
        {
            get;
        }
    }
class Ellipse2 : Ellipse, IPerimeter
    {
        public double Perimeter
        {
            get
            {
                return Math.PI * (SemiMajorAxis + SemiMinorAxis);
            }
        }
    }
class Circle2 : Circle, IPerimeter
    {
        public double Perimeter
        {
            get
            {
                return 2 * Math.PI * Radius;
            }
        }
    }
class Program
    {
        static void Main(string[] args)
        {
            Circle2 circle = new Circle2();
            circle.Radius = 1;
            Ellipse2 ellipse = new Ellipse2();
            ellipse.SemiMajorAxis = 1;
            ellipse.SemiMinorAxis = 2;
            Console.WriteLine("椭圆的周长:{0}\n圆的周长:{1}", ellipse.Perimeter, circle.Perimeter);
        }
    }
  • 可以看出“版本2的圆和椭圆”拥有之前圆和椭圆的全部功能,并有周长新功能。
  • 并没用改变之前圆和椭圆类的代码,“版本2的圆和椭圆”直接继承对应的类和周长接口。

运行结果
在这里插入图片描述

  • 继承接口的类必须实现对应的属性或方法
  • 在实现的方法和属性之前无需加 override
  • 接口之间可以多继承
发布了12 篇原创文章 · 获赞 12 · 访问量 301

猜你喜欢

转载自blog.csdn.net/weixin_44611096/article/details/104971577