本案例主要讲解是虚函数和接口的应用的方法,但是在这里牵扯到很多的知识点,是一个综合性的例题,案例如下:
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;
//这里返回我们接口的属性
}
下面是运行结果:
这个是我自己定义的事件我是小任 这个是自己定义的函数我是小任
下面我们同时给出几个类型的定义:
接口包含方法、属性、事件、索引等一系列声明。可以让类来实现指定接口,这个类必须为接口中指定的声明来定义代码。结构也可以实现接口。实现方法和类相同。
}