接口:

    1. 不允许使用访问修饰符,所有接口成员都是公共的.
    2. 接口成员不能包含代码体.
    3. 接口不能定义字段成员.
    4. 接口成员不能使用关键字static,vritual,abstract,sealed来定义.
    5. 类型定义成员是禁止的.

如果要隐藏继承了接口中的成员,可以用关键字new来定义它们.

  1. public interface IMyInterface
  2. {
  3. void DoSomething();
  4. }
  5.  
  6. public interface IMyDeInterface : IMyInterface
  7. {
  8. new void DoSomething();
  9. }

在接口中定义的属性可以确认访问块get和set中的哪一个能用于该属性.

  1. public interface IMyInterface
  2. {
  3. int myNum
  4. {
  5. get;
  6. set;
  7. }
  8. }

注意:接口中不能指定字段.

在类中实现接口:

当一个类实现一个接口时,可以使用abstract或virtual来执行接口的成员,而不能使用static或const.

一个类的如果实现了一个借口,那么这个类的派生类隐式的支持该接口.

显式执行接口成员

接口成员可以由类显式的执行.如果这么做,那么这个成员只能通过接口来访问.而不能通过类来访问.

  1. public interface IMyInterface
  2. {
  3. void DoSomeThing();
  4. }
  5.  
  6. public class MyClass : IMyInterface
  7. {
  8. void IMyInterface.DoSomeThing()
  9. {
  10. throw new NotImplementedException();
  11. }
  12. }
  1.  
  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. //此时mc是没有方法的.
  4. MyClass mc = new MyClass();
  5.  
  6. //此时my有个方法DoSomeThing()
  7. IMyInterface my = mc;
  8. my.DoSomeThing();
  9. }
  1.  
  1. 隐式执行接口成员
  1. 默认都是隐式执行接口成员.
  1. public interface IMyInterface
  2. {
  3. void DoSomeThing();
  4. }
  5.  
  6. public class MyClass : IMyInterface
  7. {
  8. public void DoSomeThing()
  9. {
  10. throw new NotImplementedException();
  11. }
  12. }
  1.  
  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. MyClass mc = new MyClass();
  4. mc.DoSomeThing();
  5. }

类实现接口属性

  1. public interface IMyInterface
  2. {
  3. int MyNum
  4. {
  5. get;
  6. }
  7. }
  8.  
  9. public class MyClass : IMyInterface
  10. {
  11. protected int myNum;
  12. public int MyNum
  13. {
  14. get
  15. {
  16. return myNum;
  17. }
  18. set
  19. {
  20. myNum = value;
  21. }
  22. }
  23. }
  1.  
  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. MyClass mc = new MyClass();
  4. mc.MyNum = 12;
  5. }

C#--接口的实现的更多相关文章

  1. App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  2. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  3. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  4. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  5. Java基础Map接口+Collections

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  6. java基础_集合List与Set接口

    List接口继承了Collection的方法  当然也有自己特有的方法向指定位置添加元素   add(索引,添加的元素); 移除指定索引的元素   remove(索引) 修改指定索引的元素   set ...

  7. 【WCF】自定义错误处理(IErrorHandler接口的用法)

    当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...

  8. PHP以接口方式实现多重继承(完全模拟)--学习笔记

     1.UML类图: 2.PHP代码: <?php /** * Created by PhpStorm. * User: andy * Date: 16-11-23 * Time: 下午7:57 ...

  9. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  10. 【接口开发】浅谈 SOAP Webserver 与 Restful Webserver 区别

    接口,强大,简单,交互,跨越平台 下面简单阐述这两大接口思想 一 REST: REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性. ...

随机推荐

  1. Extjs中grid表头内容居中

    在每一列中加上header属性即可,源码: header:'<div style=" text-align: center; vertical-align: middle;" ...

  2. 常用的JavaScript正则匹配规则代码收藏,很实用

    收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水平菜,老是自己写不出 ...

  3. php 编码规范(1)

    1. 包含尽量不要使用短标签例如 <? #coding ?> 2. 忽略结束标签,防止其他字符或者空格影响到代码 <?php$foo = 'foo'; 如果不开启压缩或者缓存输出时候 ...

  4. HttpClient支持使用代理服务器以及身份认证

    HttpClient Authentication Doument: http://hc.apache.org/httpclient-3.x/authentication.html HttpClien ...

  5. Java中关于String的split(String regex, int limit) 方法

    今天在对一个String对象进行拆分的时候,总是无法到达预计的结果.呈现数据的时候出现异常,后来debug之后才发现,错误出在String spilt上,于是开始好好研究下这东西,开始对api里的sp ...

  6. setTintColor

    [self.button:[UIColor whiteColor]]; 初步研究   这个是决定的  btn的   外边框的颜色

  7. lua编码转换

    lua编码转换, 这个要记录下:http://www.lpfrx.com/archives/4918/ ,总是觉得lua没python甘方便,应该说没这么顺手吧,可能先入为主吧,python库多, 编 ...

  8. 在线安装maven插件问题:Cannot complete the install because one or more required items could not be found.

    用Eclipse在线安装的方式:Help-->Install  New Software 地址输入:http://m2eclipse.sonatype.org/sites/m2e/,列表中打勾勾 ...

  9. [LeetCode 111] - 二叉树的最小深度 (Minimum Depth of Binary Tree)

    问题 给出一棵二叉树,找出它的最小深度. 最小深度是指从根节点沿着最短路径下降到最近的叶子节点所经过的节点数. 初始思路 不难看出又是一个需要层次遍历二叉树的题目,只要在112基础上作出简单修改即可得 ...

  10. windows 查看文件被哪个进程占用

    经常当我们删除文件时,有时会提示[操作无法完成,因为文件已在另一个程序中打开,请关闭该文件并重试],到底是哪些程序呢? 有时候一个一个找真不是办法,已经被这个问题折磨很久了,今天下决心要把它解决,找到 ...