C# 接口使用方法

       之前一直不理解接口这一概念,今天无意中翻书,网上查资料悟道其中的道理,现在工作没有用到interface这一块,怕以后会遇到忘记实现的方法便记录下来,哪里写的不对希望读者指出,话不多说,接下来看我对接口的理解。

1.接口说明:

  接口为不同应用的实现提供了一中规范和约束,只要每个应用都遵守这种规范和约束,整个系统就可以得到有效的组织,从而为应用系统的低代价开发提供有效的途径。

  接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类《至少》要实现哪些功能,继承它的类可以增加自己的方法。

2.接口声明:

    interface ISample
    {
        void f(int x);                              //方法
        int att { get; set; }                       //属性(可读,可写)
        event EventHandler OnDraw;                  //事件
        string this[int index] { get; set; }        //索引器
    }

3.接口使用注意事项:

1.接口可以继承。

2.类要继承接口的所有东西

3.接口不能继承类

4.一个类可以继承多个接口

5.接口的修饰符可以是 newpublicprotectedinternalprivate

6.接口成员前面不允许有修饰符,都默认为公有成员(public7.接口成员可以分为4类:方法、属性、事件、索引器,而不能包含成员变量

4.实例

   public class Program
    {
        static void Main(string[] args)
        {
            Dog dog = new Dog();    
            dog.Cay();

            Cat cat = new Cat();
            cat.Cay();

            Pig pig = new Pig();
            pig.Cay();

            Console.Read();
        }
    }
    class Dog : Animal                      //定义狗的类
    {
        public void Cay()                   //输出狗叫声的方法
        {
            Console.WriteLine("汪汪汪");
        }
    }
    class Cat : Animal                      //定义猫的类
    {
        public void Cay()                   //输出猫叫声的方法
        {
            Console.WriteLine("喵喵喵");
        }
    } 
    class Pig : Animal                      //定义猪的类
    {
        public void Cay()                   //输出猪叫声的方法
        {
            Console.WriteLine("哼哼哼");
        }
    }

    interface Animal    //动物接口
    {
        void Cay();     //叫声的方式 
    }

输出的结果:

这样一看,如果想要调用Cay()方法,在Dog,Cat,Pig中直接定义不就好了,何必多次一举?

那么我们修改一下代码,再定义一个类Class,这个Class作为实现接口传入,这个类不需要继承于接口Animal:

   public class Program
    {
        static void Main(string[] args)
        {
            Class c = new Class();
            Animal animal;

            animal = new Dog();
            c.WriteCay(animal);

            animal = new Cat();
            c.WriteCay(animal);

            animal = new Pig();
            c.WriteCay(animal);

            Console.Read();
        }
    }
    class Dog : Animal                      //定义狗的类
    {
        public void Cay()                   //输出狗叫声的方法
        {
            Console.WriteLine("汪汪汪");
        }
    }
    class Cat : Animal                      //定义猫的类
    {
        public void Cay()                   //输出猫叫声的方法
        {
            Console.WriteLine("喵喵喵");
        }
    } 
    class Pig : Animal                      //定义猪的类
    {
        public void Cay()                   //输出猪叫声的方法
        {
            Console.WriteLine("哼哼哼");
        }
    }
    class Class
    {
        public void WriteCay(Animal animal)
        {
            animal.Cay();
            Console.WriteLine("--------------------------");
        }
    }
    interface Animal    //动物接口
    {
        void Cay();     //叫声的方式 
    }

此时的函数的结果是:

 如果再来一个Monkey,Cattle,Sheep这样的类添加进来,也只需要把他们的相关类加进来,然后在Main()中稍作修改就好,扩充性特别好。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中的接口是一种契约,它定义了一个应该实现哪些方法和属性。 接口可以被用于多态性,也可以用于实现之间的协作。下面是一个简单的接口示例: ```csharp public interface IShape { double GetArea(); double GetPerimeter(); } public class Circle : IShape { private double radius; public Circle(double radius) { this.radius = radius; } public double GetArea() { return Math.PI * radius * radius; } public double GetPerimeter() { return 2 * Math.PI * radius; } } public class Rectangle : IShape { private double length; private double width; public Rectangle(double length, double width) { this.length = length; this.width = width; } public double GetArea() { return length * width; } public double GetPerimeter() { return 2 * (length + width); } } ``` 在这个示例中,IShape接口定义了两个方法GetArea和GetPerimeter。Circle和Rectangle都实现了这个接口,并提供了自己的实现。这样,我们就可以使用多态性来处理这些对象: ```csharp IShape[] shapes = new IShape[2]; shapes[0] = new Circle(5); shapes[1] = new Rectangle(4, 6); foreach (IShape shape in shapes) { Console.WriteLine("Area: {0}", shape.GetArea()); Console.WriteLine("Perimeter: {0}", shape.GetPerimeter()); } ``` 输出: ``` Area: 78.53981633974483 Perimeter: 31.41592653589793 Area: 24 Perimeter: 20 ``` 在这个示例中,我们使用IShape接口的引用来处理Circle和Rectangle对象。这使我们能够使用相同的代码来处理不同型的对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值