当前位置:首页>网络学院>程序开发>ASP.NET教程>文章内容

asp.net 2.0教程 c#中的接口、抽象、委托

[ 来源:http://www.it55.com | 作者: | 时间:2007-10-08 | 收藏 | 推荐 ] 【

尊重作者,请保留 www.it55.com 链接字样。

精美韩国模版下载http://www.it55.com

在学习c# 2.0的新特性以前,我们一起来看看c#传统印象里的接口、抽象、委托是怎么一回事。
1、接口包含诸如方法和属性定义等一系列的声明。而这些接口必须有实现接口的类来实现。
定义接口:
[存取权限] interface 接口名称
{
    接口体;
}
对接口的存取权限比较常用的有public或internal。
在接口体中定义了各种各样的实现类时必须提供的代码项。接口可以定义方法、属性、索引、事件,但不包括域。
举例:所有车辆的操作都包括“Start”和"Stop",状态只有运行和非运行,我们可以使用Start()和Stop()方法来模型化这些功能,用"started"来表示车辆的运行与否。如:
public interface IDrivable
{
  void Start();
  void Stop();
  bool started
  {
    get;
  }
}
接口只规范started的get属性、车辆的两种操作函数,返回类型void
下面的类来实现这个接口:
public class Car : IDrivable
{
  private bool _started = false;
  public void Start()
  {

免费资源http://www.it55.com

     _started = true;
  }
  public void Stop()
  {
     _started = false;
  }
  public bool started
  {
     get
     {
        _return started;
     }
  }
}

http://www.it55.com在线教程

接下来,程序就可以通过实例化这个Car类来实现对车辆的操作了:
Car myCar = new Car();
myCar.Start();

精美韩国模版下载http://www.it55.com

2、抽象类有下列特点:(此处原文出自互联网,经笔者部分修改,感谢原作者)
声明一个抽象方法使用abstract关键字;
一个类中可以包含一个或多个抽象方法;
抽象类中可以存在非抽象的方法;
抽象类不能被直接被实例化;
实现抽象类用“:”(冒号),实现抽象方法用override关键字;
抽象类可以被抽象类所继承,结果仍是抽象类;
抽象方法被实现后,不能更改修饰符,并且在使用之前必须被重载(override)。

免费网页模版下载http://www.it55.com

例如:
    public abstract class Person
    {
        public abstract void SayHello();//抽象方法
        public void about()//非抽象方法
        {
            Console.WriteLine("Abstract Demo");
        }
    } 免费壁纸下载http://www.it55.com

    public class Student : Person
    {
        public override void SayHello()//抽象方法的重载
        {
            Console.WriteLine("SayHello");
        }
    }
    class MainClass
    {
        public static void Main()
        {
            new Student().SayHello();//使用重载后的类和方法
        }
    }

精美商业网页模版下载http://www.it55.com

3、委托(此处原文出自互联网,写的比我透彻,所以直接引用,感谢原作者)
   委托和事件这两个概念是完全配合的。委托仅仅是函数指针,那就是说,它能够引用函数,通过传递地址的机制完成。
   委托是一个类,当你对它实例化时,要提供一个引用函数,将其作为它构造函数的参数。
   每一个委托都有自己的签名,例如:Delegate int SomeDelegate(string s, bool b);是一个委托申明,在这里,提及的签名,
   就是说SomeDelegate 这个委托 有 string 和 bool 类型的形参,返回一个int 类型。
   上面提及的:当你对委托实例化时,要提供一个引用函数,将其作为它构造函数的参数。
   这里要注意了:被引用的这个函数必须和委托有相同的签名。
 
   看下面的函数:
   private int SomeFunction(string str, bool bln){...}

免费资源http://www.it55.com

   你可以把这个函数传给SomeDelegate的构造函数,因为他们有相似的签名(in other words,他们都有相同的形参类型和个数,并且返回相同的数据类型)。

免费矢量图片素材下载http://www.it55.com

     SomeDelegate sd = new SomeDelegate(SomeFunction); 免费网页模版下载http://www.it55.com

   sd 引用了 SomeFunction,也就是说,SomeFunction已被sd所登记注册,如果你调用 sd,SomeFunction 这个函数也会被调用,
   记住:我所说 SomeFunction的含义,后面,我们会用到它。 免费网页模版下载http://www.it55.com

   委托类似于函数指针,它既能引用静态(static)方法,也能引用实例方法。
   委托使用分三步:1、委托声明。2、委托实例化。3、委托调用。

免费网页模版下载http://www.it55.com

例: 免费矢量图片素材下载http://www.it55.com

using System;

IT资讯之家 http://www.it55.com

namespace 委托
{
   delegate int NumOpe(int a,int b); //委托声明
   class Class1
   {
     static void Main(string[] args)
     {
       Class1 c1 = new Class1();

(编辑:IT资讯之家 www.it55.com

返回顶部
共2页: 上一页 1 [2] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]