欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c# 接口interface基础入门小例子

程序员文章站 2023-12-13 20:52:58
复制代码 代码如下:  ///     /// interface    ...

复制代码 代码如下:

  /// <summary>
    /// interface
    /// 与抽象类的区别:
    /// 1,abstract可以有具体方法和抽象方法(必须有一个抽象方法),interface没有方法实现
    /// 2,abstract可以有构造函数和析构函数,接口不行
    /// 3,一个类可以实现多个interface,但只能继承一个abstract
    /// 特点:
    /// interface成员隐式具有public,所以不加修饰符
    /// 不可以直接创建接口的实例,如:iperson xx=new iperson()//error
    /// </summary>
    public interface iperson
    {
        string name { get; set; }//特性
        datetime brith { get; set; }
        int age();//函数方法
    }
    interface iadderss
    {
        uint zip { get; set; }
        string state();
    }

复制代码 代码如下:

   /// <summary>
    /// interface实现interface
    /// </summary>
    interface imanager:iperson
    {
        string dept { get; set; }
    }
    /// <summary>
    /// 实现多个interface
    /// 实现哪个interface必须写全实现的所有成员!
    /// </summary>
    public class employee:iperson,iadderss
    {
        public string name { get; set; }
        public datetime brith { get; set; }
        public int age()
        {
            return 10;
            throw new notimplementedexception();
        }
        public uint zip { get; set; }
        public string state()
        {
            return "alive";
        }
    }

复制代码 代码如下:

/// <summary>
     /// 重写接口实现:
     /// 如下,类 employer 实现了iperson,其中方法 age() 标记为virtual,所以继承于 employer 的类可以重写  age()
     ///
     /// </summary>
     public class employer:iperson
     {
         public string name { get; set; }
         public datetime brith { get; set; }
         public virtual int age()
         {
             return 10;
         }
     }
     public class work:employer
     {
         public override int age()
         {
             return base.age()+100;//其中base是父类
         }
     }

实现,对象与实例:

复制代码 代码如下:

       #region #interface

             employee eaji = new employee()
                 {
                     name = "aji",
                     brith = new datetime(1991,06,26),
                 };

             #endregion
             #region #interface 的强制转换

             iperson ip = (iperson)eaji; //可以通过一个实例来强制转换一个接口的实例,进而访问其成员,
             ip.age();
             datetime x=ip.brith;

             //也可以写成这样:
             iperson ip2 = (iperson) new employee();

             //但是这样子有时候不是很安全,我们一般用is 和 as来强制转换:
             if (eaji is iperson)
             {
                 iperson ip3 = (iperson)eaji;
             }
             //但is并不是很高效,最好就是用as:
             iperson ip4 = eaji as iperson;
             if (ip4 != null)//用as时,如果发现实现ip4的类没有继承 iperson,就会返回null
             {
                 console.writeline(ip4.age());
             }

             #endregion

上一篇:

下一篇: