虚函数和接口的应用

本案例主要讲解是虚函数和接口的应用的方法,但是在这里牵扯到很多的知识点,是一个综合性的例题,案例如下:

using System; using System.Data;

using System.Configuration;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

/// <summary>

///这个是接口的初级应用 ///

 </summary>

namespace Jie_Kou2

 {    

 public delegate  void  Modlfy(string  Sender);  

 //声明一个委托,用来定义事件    

 public interface IBook   

  {        

 string BookName { get; set; } 

//声明接口中的属性     

    void InsertTbData(); //声明接口中的方法    

     event Modlfy Shi_Jian;   //此处声明的为一个事件集合,委托类型Modify

   }  

   public class Book : IBook   

  {       

  //此类继承了IBook接口       

  public event Modlfy Shi_Jian;   //实现他的事件   

      string bookname;    

     public Book(string bn)    //构造函数,实现字段的初始化       

  {          

   bookname = bn; 

        }     

    /// <summary>       

  /// 实现接口中的方法BookName属性    

     /// </summary>

        public string BookName    

     {           

  get { return bookname; }    

         set    

         {     

            bookname = value;           

      this.Shi_Jian(value);  //此处触发接口中的事件,此事件是在给BookName赋值的时候触发的     

        }      

   }       

  public void InsertTbData()     

    {        

     //这个函数就是对接口中的方法实现重新定义   

       }

    }

下面这个实例是对上面类的调用:

  protected void Button1_Click(object sender, EventArgs e)  

   {      

   Book b = new Book("人性的优点");       

  b.Shi_Jian += new Modlfy(b_Shi_Jian);    //此处为事件的添加、但我们把事件定义好的同时、也要注册好事件。有个技巧,但我们敲完+=后,直接双击的按下Tab键,这样vs就能自动的为我们添加好事件,

        b.BookName = "我是小任";  

  //这个是在BookName这个属性赋值的时候触发这个事件,,但要记住的是在他触发以前必须先要注册好这个事件,否则系统会报错。      

   Response.Write(haha(b));        

  }

    void b_Shi_Jian(string Sender)

    {       

  Response.Write("这个是我自己定义的事件"+Sender );  

       //throw new NotImplementedException();

    }   

  private static string haha(IBook ib)    

 {

 //注意到这里,我们给的参数是接口的类型     

    return "<br/>这个是自己定义的函数"+ib.BookName;       

  //这里返回我们接口的属性  

   }

下面是运行结果:

这个是我自己定义的事件我是小任 这个是自己定义的函数我是小任

下面我们同时给出几个类型的定义:

接口包含方法、属性、事件、索引等一系列声明。可以让类来实现指定接口,这个类必须为接口中指定的声明来定义代码。结构也可以实现接口。实现方法和类相同。

}

原文地址:https://www.cnblogs.com/zhijianliutang/p/2250712.html