首页 > 技术文章 > 委托的使用

webzhoulin 2014-02-20 17:49 原文

1、接口:

    接口与抽象类一样,也是表示某种规则,一旦使用了该规则,就必须实现相关的方法。对于C#语言而言,由于只能继承自一个父类,因此若有多个规则需要实现,则使用接口是个比较好的做法。

 

2、接口的定义

interface 接口名

{

    方法声明;

}

 

3、不同接口中若有多个相同名称的方法,则需要显式指定接口名,例如:

                       

4、接口的使用

使用接口也可以实现多态。

代码如下:

class Program

{

    static void Main(string[] args)

    {

        //提供三个类,完成工资的计算

        List<ICalu> list = new List<ICalu>();

        list.Add(new Boss());

        list.Add(new Clert());

        list.Add(new Clert());

        list.Add(new Customer());

        foreach (ICalu emp in list)

        {

            emp.Calu(); //多态

        }

    }

}

class Boss : ICalu

{

    public  void Calu()

    {

        Console.WriteLine("计算老板工资");

    }

 

}

class Customer : ICalu

{

    public  void Calu()

    {

        Console.WriteLine("计算客户工资");

    }

}

class Clert : ICalu

{

    public  void Calu()

    {

        Console.WriteLine("计算职员工资");

    }

}

interface ICalu

{

    void Calu();

}

 

 

5、接口应用场合举例

 6、接口demo

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace ConsoleApplication1 {

    class Program     {     

    static void Main(string[] args)         {    

         List<IShow> list = new List<IShow>();      

       list.Add(new Map());     

        list.Add(new Voice());   

          list.Add(new Video());    

         list.Add(new ThreeD());

            foreach(IShow ishow in list)             {      

           ishow.Show();             }   

      }  

   }  

    interface IShow     {    

     void Show();     }   

  public class Map:IShow     {    

     public void Show()      

   {       

      Console.WriteLine("显示图片");         }    

}  

   public class Voice : IShow     {    

     public void Show()         {   

          Console.WriteLine("播放声音");         }

    }   

  public class Video : IShow     {   

      public void Show()   

      {         

    Console.WriteLine("显示视频");         }  

   }     public class ThreeD : IShow     {  

       public void Show()         {    

         Console.WriteLine("3D交互");         }    

}

}

 
复制代码

 

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace ConsoleApplication2 {

    public delegate void Mydel(); 

   class Program     {      

  static void Main(string[] args)         {   

         Hospital h = new Hospital();      

      People LaoWang = new People(); 

           LaoWang.OnEatTooMuch += new Mydel(h.Check);   

         LaoWang.Eat(10);         }  

              }

 

    class People     {   

     public event Mydel OnEatTooMuch;   

     public void Eat(int i)         {      

      if(i<3)             { 

               Console.WriteLine("吃的太少");             } 

           else if(i==3)             {                 Console.WriteLine("吃的正好");             }  

          else if (i <=5)             {                 Console.WriteLine("吃的多了点");             }   

         else             {                 if(OnEatTooMuch!=null)       

         {   

                 OnEatTooMuch();                 }  

          }    

    }   

}

 

    class Hospital     {  

      public void Check()         {             Console.WriteLine("治疗");         } 

 

   }

 

}

推荐阅读