当前位置: 首页 > news >正文

接口使用

接口:

1.属于任何类或结构的一组相关功能

2.定义:interface关键字定义,可由方法,属性,事件,索引器这四种成员类型的任意组合组成

例子:interface EatBehairor{}

接口的特征:


1、接口类似于抽象基类,不能直接实例化接口;接口中的方法都是抽象方法,实现接口的任何非抽象类型都必须实现接口的所有成员。

2、接口不能包含常量、字段、运算符、实例构造函数、析构函数或类型、不能包含静态成员。

3、接口成员是自动公开的,且不能包含任何访问修饰符。

4、接口自身可从多个接口继承,类和结构可继承多个接口,但接口不能继承类。

例子:

interface IProgram
    {
        void Fun();
    }
    class Program:IProgram
    {
         //显式实现接口成员
        void IProgram。Fun()
        {
            Console.WriteLine("I am Fun.");
        }
        staticvoid Main(string[] args)
        {
            IProgram p =new Program();  //声明一个接口实例,但不是对接口进行实例化
            p.Fun();
            Console.Read();
        }
    }

5.一般情况,当类或者结构要实现的是单个接口,可以使用隐式实现。

6.如果类或者结构继承了多个接口且接口中具有相同名称成员时,就要用到显式实现,当显式实现方式存在时,隐式实现方式就失效了。

class Program : IProgram, IAProgram
    {
            
void IProgram.Fun()  //显式实现接口IProgram         {             Console.WriteLine("I am IProgram Fun.");         }         void IAProgram.Fun()  //显式实现接口IAProgram         {             Console.WriteLine("I am IAProgram Fun.");         } }
class Program : IProgram, IAProgram
    {
    
        void Fun()                //隐式继承接口失效
        {
             Debug.Log("Fun")
        }
        void IProgram.Fun()  //显式实现接口IProgram
        {
            Console.WriteLine("I am IProgram Fun.");
        }
        void IAProgram.Fun()  //显式实现接口IAProgram
        {
            Console.WriteLine("I am IAProgram Fun.");
        }
}            

 

转载于:https://www.cnblogs.com/blog-196/p/9744582.html

相关文章:

  • java中如何模拟真正的同时并发请求?
  • P3807 【模板】卢卡斯定理
  • windows server 2003 安全加固(一)
  • 算法-图和图算法
  • Totuial 01 java
  • Spring Vault 2.1 正式发布
  • 聊聊storm client的nimbus.seeds参数
  • 深入源码分析Java线程池的实现原理
  • 第15讲 | 深入区块链技术(七):哈希与加密算法
  • Babel配置的不完全指南
  • IP数据报
  • 过了技术面却在HR面被刷?必备40问!从容应对HR,斩获N多大厂offer!
  • 如何解决 Django 前后端分离开发的跨域问题
  • JSP学习-02隐式对象
  • R1 学习记录
  • Android框架之Volley
  • EOS是什么
  • gcc介绍及安装
  • Iterator 和 for...of 循环
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java超时控制的实现
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Octave 入门
  • quasar-framework cnodejs社区
  • Spark RDD学习: aggregate函数
  • TCP拥塞控制
  • vue中实现单选
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 来,膜拜下android roadmap,强大的执行力
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 微信支付JSAPI,实测!终极方案
  • 详解NodeJs流之一
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 小而合理的前端理论:rscss和rsjs
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)linux下的时间函数使用
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .gitignore文件—git忽略文件
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net framework4与其client profile版本的区别
  • .NET 读取 JSON格式的数据
  • .NET 中让 Task 支持带超时的异步等待
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .Net接口调试与案例
  • .NET框架
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • ::前边啥也没有
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [20170705]diff比较执行结果的内容.txt
  • [Angular 基础] - 数据绑定(databinding)
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序