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

 更新时间:2013年04月21日 20:32:07   作者:  
用于描述类的功能,类似于契约,指示了类将:执行的工作,形参类型,返回结果类型,但本身没有执行的代码

复制代码 代码如下:

  /// <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

相关文章

  • 初步认识C#中的Lambda表达式和匿名方法

    初步认识C#中的Lambda表达式和匿名方法

    这篇文章主要介绍了初步认识C#中的Lambda表达式和匿名方法,本文着重讲解Lambda表达式和匿名方法的基础知识,需要的朋友可以参考下
    2015-01-01
  • c#多种加解密示例(md5加密解密)

    c#多种加解密示例(md5加密解密)

    这篇文章主要介绍了c#多种加解密示例,包括了MD5加密,SHA1加密,DES加解密,需要的朋友可以参考下
    2014-03-03
  • 解决Unity项目中UI脚本丢失的问题

    解决Unity项目中UI脚本丢失的问题

    这篇文章主要介绍了解决Unity项目中UI脚本丢失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C#开发WinForm之DataGridView开发详解

    C#开发WinForm之DataGridView开发详解

    这篇文章主要介绍了C#开发WinForm之DataGridView开发详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • c#检测文本文件编码的方法

    c#检测文本文件编码的方法

    这篇文章主要介绍了c#检测文本文件编码的方法
    2016-03-03
  • Unity3D实现打砖块游戏

    Unity3D实现打砖块游戏

    这篇文章主要为大家详细介绍了Unity3D实现打砖块游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C#中获取各种文件名的实现方式

    C#中获取各种文件名的实现方式

    这篇文章主要介绍了C#中获取各种文件名的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • C#实现的算24点游戏算法实例分析

    C#实现的算24点游戏算法实例分析

    这篇文章主要介绍了C#实现的算24点游戏算法,实例分析了算24点游戏相关的运算技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • C#使用Task实现并行编程

    C#使用Task实现并行编程

    这篇文章介绍了C#使用Task实现并行编程的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • C# 禁止应用程序多次启动的实例

    C# 禁止应用程序多次启动的实例

    经常我们会有这样的需求,只让应用程序运行一个实体,下面是实现的方法,有需要的朋友可以参考一下
    2013-09-09

最新评论