C#--接口的实现

时间:2023-02-23 22:12:18

接口:

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

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

public interface IMyInterface
{
void DoSomething();
} public interface IMyDeInterface : IMyInterface
{
new void DoSomething();
}

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

public interface IMyInterface
{
int myNum
{
get;
set;
}
}

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

在类中实现接口:

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

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

显式执行接口成员

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

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

类实现接口属性

public interface IMyInterface
{
int MyNum
{
get;
}
} public class MyClass : IMyInterface
{
protected int myNum;
public int MyNum
{
get
{
return myNum;
}
set
{
myNum = value;
}
}
}
 
    protected void Page_Load(object sender, EventArgs e)
{
MyClass mc = new MyClass();
mc.MyNum = 12;
}

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 &plus;SpringBoot 集成 阿里大鱼 短信接口详解与Demo

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

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

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

随机推荐

  1. sql 日期格式输出 - 转

    SELECT CONVERT(varchar(100), GETDATE(), 0) 05 9 2011 9:12AM SELECT CONVERT(varchar(100), GETDATE(), ...

  2. IUnknown—COM和MFC

    http://www.vckbase.com/index.php/wv/60 问题: 我用MFC编写COM程序有一段时间了,知道如何使用宏和嵌套类,以及如何在嵌套类中处理IUnknown接口,但对IU ...

  3. bzoj1832&colon; &lbrack;AHOI2008&rsqb;聚会

    写过的题... #include<cstdio> #include<cstring> #include<iostream> #include<algorith ...

  4. virtenv 0&period;8&period;6 发布,虚拟桌面配置工具 - 开源中国社区

    virtenv 0.8.6 发布,虚拟桌面配置工具 - 开源中国社区 virtenv 0.8.6 发布,virtenv 是一个用 QT4 开发的应用,用来配置和启动基于 LXC 的虚拟桌面环境.该容器 ...

  5. Linux系统安装建议

    1.推荐使用CentOS-6.x 64位版本:2.分区,推荐分出/usr/local用来存放应用程序./data分区用来存放数据,具体分区建议如下:/boot 100Mswap 4096M (视内存大 ...

  6. JS执行事件

    先贴出几个名词: 同步任务: 在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务 异步任务:   不进入主线程,而进入"任务队列"的任务,只有任务队列通知主线程, ...

  7. BZOJ 3450&colon; Tyvj1952 Easy &lbrack;DP 概率&rsqb;

    传送门 题意:$ox?$组成的序列,$?$等概率为$o\ or\ x$,得分为连续的$o$的长度的平方和,求期望得分 一开始没想出来,原因在于不知道如何记录长度 其实我们同时求得分和长度的期望就好了 ...

  8. TensorFlow-Bitcoin-Robot&colon;Tensorflow 比特币交易机器人

    简介 一个比特币交易机器人基于 Tensorflow LSTM 模型,仅供娱乐. A Bitcoin trade robot based on Tensorflow LSTM model.Just f ...

  9. 打包加载 AssetBundle

    1.先创建Asset序列化(单个文件夹所在文件夹路径,会遍历这个文件夹所有的Prefab,所有的Prefab名字不能重复,必须保证名字得唯一性),配置好ConfigAB表 /* ######### # ...

  10. Testing - 软件测试知识梳理 - 理解测试

    理解 目的 测试就是要找到关键信息,有关项目和产品的关键决策都是根据这些信息做出. 对产品质量做出总体评估. 找出并报告团队所有可能会对产品价值产生消极影响的问题(但并不意味着能发现所有问题). 重心 ...