C# 接口(Interface)

接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分。

接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。

接口使得实现接口的类或结构在形式上保持一致。

抽象类在某种程度上与接口类似,但是,它们大多只是用在当只有少数方法由基类声明由派生类实现时。


定义接口: MyInterface.cs

接口使用 interface 关键字声明,它与类的声明类似。接口声明默认是 public 的。下面是一个接口声明的实例:

interface IMyInterface
{void MethodToImplement();
}

以上代码定义了接口 IMyInterface。通常接口命令以 I 字母开头,这个接口只有一个方法 MethodToImplement(),没有参数和返回值,当然我们可以按照需求设置参数和返回值。

值得注意的是,该方法并没有具体的实现。

接下来我们来实现以上接口:InterfaceImplementer.cs

实例

using System;interface IMyInterface
{// 接口成员void MethodToImplement();
}class InterfaceImplementer : IMyInterface
{static void Main(){InterfaceImplementer iImp = new InterfaceImplementer();iImp.MethodToImplement();}public void MethodToImplement(){Console.WriteLine("MethodToImplement() called.");}
}

InterfaceImplementer 类实现了 IMyInterface 接口,接口的实现与类的继承语法格式类似:

class InterfaceImplementer : IMyInterface
继承接口后,我们需要实现接口的方法 MethodToImplement() , 方法名必须与接口定义的方法名一致。

接口继承: InterfaceInheritance.cs

以下实例定义了两个接口 IMyInterface 和 IParentInterface。

如果一个接口继承其他接口,那么实现类或结构就需要实现所有接口的成员。

以下实例 IMyInterface 继承了 IParentInterface 接口,因此接口实现类必须实现 MethodToImplement() 和 ParentInterfaceMethod() 方法:

实例

using System;interface IParentInterface
{void ParentInterfaceMethod();
}interface IMyInterface : IParentInterface
{void MethodToImplement();
}class InterfaceImplementer : IMyInterface
{static void Main(){InterfaceImplementer iImp = new InterfaceImplementer();iImp.MethodToImplement();iImp.ParentInterfaceMethod();}public void MethodToImplement(){Console.WriteLine("MethodToImplement() called.");}public void ParentInterfaceMethod(){Console.WriteLine("ParentInterfaceMethod() called.");}
}

实例输出结果为:

MethodToImplement() called.
ParentInterfaceMethod() called.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI浪潮席卷而来,现在加入还来得及吗?

当你的朋友圈刚被 AlphaGo、Master 刷屏,没几天就听说日本有公司开始用 AI 取代员工、百度将人工智能列为未来10年最重要战略。同时一夜之间,似乎所有大公司都开始做无人驾驶…… 人工智能正以前所未有的速度,渗透、改造着各行各业。而加速这…

python数据字符_python数据清洗系列之字符串处理详解

数据清洗是一项复杂且繁琐(kubi)的工作,同时也是整个数据分析过程中最为重要的环节。有人说一个分析项目80%的时间都是在清洗数据,这听起来有些匪夷所思,但在实际的工作中确实如此。数据清洗的目的有两个,第一是通过清洗让数据可用…

networkx 画有权图_利用NetworkX画网络图

现在各种商业和开源的网络可视化的工具非常多,NetworkX - NetworkX是一个非常重要的网络分析工具。当然它侧重于对网络结构的分析,也包含了网络可视化部分。我最近由于要画一些张量网络图,所以找到了这个工具。另一个值得推荐的是Latex中基于…

将LINUX变成路由器

LINUX系统是一个强大的网络操作系统&#xff0c;本身就是一个出色的路由器&#xff0c;只要经过非常少的几步设置&#xff0c;就会使用LINUX系统本身成为一台出色的路由器。<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />要想使…

使用 Benchmark.NET 测试代码性能

今天&#xff0c;我们将研究如何使用Benchmark.Net来测试代码性能。借助基准测试&#xff0c;我们可以创建基准来验证所做的更改是否按预期工作并且不会导致性能下降。并非每个项目都需要进行基准测试&#xff0c;但是如果您正在开发的是NuGet程序包或通用dll&#xff0c;则很有…

python用reshape二维数组化为一维数组_Python reshape的用法及多个二维数组合并为三维数组的实例...

reshape(shape) &#xff1a; 不改变数组元素&#xff0c;返回一个shape形状的数组&#xff0c;原数组不变。是对每行元素进行处理resize(shape) &#xff1a; 与.reshape()功能一致&#xff0c;但修改原数组In [1]: a np.arange(20)#原数组不变In [2]: a.reshape([4,5])Out[2…

【直观理解】一文搞懂RNN(循环神经网络)基础篇

推荐阅读时间8min~15min 主要内容简介&#xff1a;神经网络基础、为什么需要RNN、RNN的具体结构、以及RNN应用和一些结论 1神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子&#xff0c;只要训练数据足够&#xff0c;给定特定的x&#xff0c;就能得到希望的y&#x…

IIS 7.0 的 ASP.NET 应用程序生命周期概述

本主题介绍在 IIS 7.0 集成模式下运行以及与 .NET Framework 3.0 或更高版本一起运行的 ASP.NET 应用程序的应用程序生命周期。IIS 7.0 还支持经典模式&#xff0c;其行为类似于在 IIS 6.0 中运行的 ASP.NET。有关更多信息&#xff0c;请参见 IIS 5.0 和 6.0 的 ASP.NET 应用程…

python网络运维案例代码库_OLDboy-python第八期运维教程

课程目录&#xff1a;L01-Python8期VIP视频-Day101-开课介绍02-学生介绍03-课程内容介绍04-Python的发展05-Python特性介绍及与其它语言对比06-Python安装及环境准备07-编程风格要求08-Python的数据类型和运算符09-单行和多行注释10-理解ASSIC Unicode UTF-8编码11-使用和导入模…

给新手程序员的16个工作必备小妙招,省下时间去LOL吧!

写在前面&#xff1a; 这个文章核心并不是程序优化的具体技巧&#xff0c;而是拿到一个问题如何思考和利用工具的通用方法。比如即使我们不知道 profiler 这个东西&#xff0c;通过搜索"代码 每一行 时间"也可以很快知道有这样的工具叫做 profiler&#xff0c;并且学…

c#如何识别一张图片的格式

问题窥探在有些时候&#xff0c;我们拿到了一张图片。这张图片的格式是 JPG 还是 PNG&#xff1f;是 BMP 还是只有一帧的 GIF&#xff1f;虽然在大部分情况下&#xff0c;你确实可以把一张 PNG 格式的图片保存成 JPG&#xff0c;在电脑上也能双击打开看。但如果你要写一些程序来…

xftp怎么有root权限_许多人都不懂的Linux系统里的特殊权限!!你真的了解嘛?...

有的朋友一听Linux系统文件还有特殊权限&#xff0c;那头就要爆炸了&#xff0c;那还是接着看看/tmp目录和/usr/bin/passwd文件&#xff0c;怎么回事啊&#xff01;&#xff01;&#xff01;看见没有啊&#xff01;不是应该只有rwx 吗&#xff1f;还有其他的特殊权限( s 跟t )啊…

python中abc属于字符串吗_在Python中,字符串s = 'abc',那么执行表达式s+'d'之后,s的打印结果是( )。...

【单选题】当知道条件为真,想要程序无限执行直到人为停止的话,可以需要下列哪个选项?【单选题】Python3解释器执行 for i,v in enumerate([0,1,2],2):print(i,v)和 for i,v in enumerate([0,1,2]):print(i,v)的结果,你认为对的选项是( )。【单选题】Python3解释器执行AB2C3D.l…

菜单保卫战

前几天和老公去龙之梦&#xff0c;路过米爱粥&#xff0c;只见店员们齐刷刷站成两排&#xff0c;店长在前面训话。 只听店长非常严肃的说&#xff1a;“我们的菜单是很贵的&#xff0c;大家一定要注意。不光是迎宾的事情&#xff0c;也是你们每个人的事情。要经常注意一下&…

我是怎样爬下6万共享单车数据并进行分析的(附代码)

共享经济的浪潮席卷着各行各业&#xff0c;而出行行业是这股大潮中的主要分支。如今&#xff0c;在城市中随处可见共享单车的身影&#xff0c;给人们的生活出行带来了便利。相信大家总会遇到这样的窘境&#xff0c;在APP中能看到很多单车&#xff0c;但走到那里的时候&#xff…

使用 Tye 辅助开发 k8s 应用竟如此简单(三)

使用 Tye 辅助开发 k8s 应用竟如此简单&#xff08;一&#xff09;使用 Tye 辅助开发 k8s 应用竟如此简单&#xff08;二&#xff09;续上篇&#xff0c;这篇我们来进一步探索 Tye 更多的使用方法。本篇我们来了解一下如何在 Tye 中如何对数据库进行链接。Newbe.Claptrap 是一个…

mybatis collection标签_一对多的关系,在MyBatis中如何映射?

# 使用collection标签需求&#xff1a;根据用户id查询用户信息的同时获取用户拥有的角色&#xff0c;一个用户可以拥有1个或多个角色。一般情况下&#xff0c;不建议直接修改数据库表对应的实体类。所以这里我们延用之前博客中新建的类SysUserExtend&#xff0c;并添加如下代码…

上传文件白名单_十大常见web漏洞——文件上传漏洞

漏洞介绍在我们浏览网页时&#xff0c;文件上传是非常常见的&#xff0c;比如我们会上传头像、附件、视频等文件&#xff0c;文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的&#xff0c;如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型…

Java编程比C编程好吗?《精通Unix下C语言与项目实践》读书笔记(15)

《精通Unix下C语言编程与项目实践》读书笔记(new)文章试读 不拘一个遍程序系列&#xff1a;编程序不能一个脑袋钻到底&#xff0c;有时要学会变通&#xff0c;即所谓的曲线救国。一、二、三、四职场规划&#xff1a;一些杂七杂八的职场感悟吧。不值钱的软件人才 精力充沛与事业…