当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-10-18

    本文导语:  代码如下:  ///     /// interface    /// 与抽象类的区别:    /// 1,abstract可以有具体方法和抽象方法(必须有一个抽象方法),interface没有方法实现    /// 2,abstract可以有构造函数和析构函数,接口不行    /// 3,一个...

代码如下:

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

代码如下:

   ///
    /// interface实现interface
    ///
    interface IManager:IPerson
    {
        string Dept { get; set; }
    }
    ///
    /// 实现多个interface
    /// 实现哪个interface必须写全实现的所有成员!
    ///
    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";
        }
    }

代码如下:

///
     /// 重写接口实现:
     /// 如下,类 Employer 实现了IPerson,其中方法 Age() 标记为virtual,所以继承于 Employer 的类可以重写  Age()
     ///
     ///
     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#学习笔记之C#接口的索引器
  • C#学习笔记之接口与基于接口的工厂模型
  • C#中接口(interface)的理解
  • C# Winform 调用系统接口操作 INI 配置文件的代码
  • c#基础之数组与接口使用示例(遍历数组 二维数组)
  • 有关c# 接口的一个简单实例
  • c#接口使用示例分享
  • 基于c# 接口的实例详解
  • c#中抽象类和接口的详细介绍
  • C#学习笔记之接口与基于接口的工厂模型 iis7站长之家
  • c# 实现IComparable、IComparer接口、Comparer类的详解
  • 基于c# 类、接口、结构的联系与区别详解
  • C#泛型:泛型特点、泛型继承、泛型接口、泛型委托学习笔记
  • c#使用微信接口开发微信门户应用
  • c#使用微信接口开发微信门户应用中微信消息的处理和应答
  • C#中的IEnumerable接口深入研究
  • 基于C# 中可以new一个接口?的问题分析
  • java命名空间javax.xml.ws.handler接口messagecontext成员方法: wsdl_interface定义参考
  • 使所有实现此接口(interface)的类拥有相同的构造器(contructor)?
  • java命名空间java.security.interfaces接口rsakey的类成员方法: getmodulus定义及介绍
  • interface 到底有什么用???实现接口,怎么实现??
  • java命名空间java.security.interfaces接口rsamultiprimeprivatecrtkey的类成员方法: getprimeq定义及介绍
  • 怎样用接口(interface)实现多重继承?
  • java命名空间java.security.interfaces接口rsamultiprimeprivatecrtkey的类成员方法: getprimeexponentp定义及介绍
  • java命名空间java.security.interfaces接口rsaprivatecrtkey的类成员方法: getprimep定义及介绍
  • java命名空间java.security.interfaces接口rsaprivatecrtkey的类成员方法: getprimeexponentp定义及介绍
  • java命名空间java.security.interfaces接口rsaprivatecrtkey的类成员方法: getcrtcoefficient定义及介绍
  • java命名空间java.security.interfaces接口rsaprivatecrtkey的类成员方法: getprimeq定义及介绍
  • java命名空间java.security.interfaces接口rsamultiprimeprivatecrtkey的类成员方法: getprimeexponentq定义及介绍
  • java命名空间javax.crypto.interfaces接口dhkey的类成员方法: getparams定义及介绍
  • java命名空间java.security.interfaces接口rsamultiprimeprivatecrtkey的类成员方法: getprimep定义及介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.script接口invocable的类成员方法: getinterface定义及介绍
  • 关于LOCAL接口和REMOTE接口的同时兼顾的问题
  • java命名空间javax.lang.model.element接口typeelement的类成员方法: getinterfaces定义及介绍
  • 请问 linux 是如何调用 alsa的控制接口的??是通过控制接口名字吗?
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getmanagementspecversion定义及介绍
  • LINUX下最大支持虚接口数是多少? 如果我想配置1000个虚接口可以吗?
  • java命名空间java.beans.beancontext接口beancontextproxy的类成员方法: getbeancontextproxy定义及介绍
  • 对于操作系统的程序接口,作业接口,单内核,微内核到底有什么区别?
  • java命名空间javax.print接口uriexception的类成员方法: getreason定义及介绍
  • java的API中有没有既实现了Map接口又实现了List接口的类?
  • java命名空间javax.swing.text接口caret的类成员方法: install定义及介绍
  • 菜鸟提问:一个类实现了一个接口,除了要定义接口的所有方法外,可不可以再添加其他方法?
  • java命名空间javax.swing接口rootpanecontainer的类成员方法: getrootpane定义及介绍
  • 急,请问如何修改网络接口eth为其它名称,如网络接口为abc0, abc1,要修改哪个配置文件?
  • java命名空间javax.swing.text接口highlighter的类成员方法: install定义及介绍
  • 有人在Linux下用过1394接口的设备吗?怎么装载一个1394接口的存储设备呢?
  • java命名空间java.lang.reflect接口parameterizedtype的类成员方法: getrawtype定义及介绍
  • 请问高手:EJB中的远程接口、本地接口、HOME接口的联系与区别是什么?应用时应注意哪些问题?
  • java命名空间javax.management接口descriptorread的类成员方法: getdescriptor定义及介绍
  • 请问为什麽在J2ee中客户端(测试时)用jndi定位enterprise bean的时候,可以把远程接口实例化?接口不是不可以生成对象的吗?
  • java命名空间javax.lang.model.element接口typeparameterelement的类成员方法: getgenericelement定义及介绍
  • 关于Local接口和Remote接口!(请看过SUN的PetStore例子的朋友进来看看)!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3