iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#如何定义接口
  • 953
分享到

C#如何定义接口

2023-06-17 23:06:55 953人浏览 八月长安
摘要

这篇文章主要为大家展示了“C#如何定义接口”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#如何定义接口”这篇文章吧。从技术上讲,接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码

这篇文章主要为大家展示了“C#如何定义接口”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#如何定义接口”这篇文章吧。

从技术上讲,接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码可以调用组件对象的功能。

定义接口的一般形式为:

[attributes] [modifiers] interface identifier [:base-list] {interface-body}[;]

说明:

· attributes(可选):附加的定义性信息。

· modifiers(可选):允许使用的修饰符有new和四个访问修饰符。分别是:new、public、protected、internal、private。在一个接口定义中同一修饰符不允许出现多次,new修饰符只能出现在嵌套接口中,表示覆盖了继承而来的同名成员。The public, protected, internal, and private修饰符定义了对接口的访问权限。

· 指示器和事件。

· identifier:接口名称。

· base-list(可选):包含一个或多个显式基接口的列表,接口间由逗号分隔。

· interface-body:对接口成员的定义。

· 接口可以是命名空间或类的成员,并且可以包含下列成员的签名: 方法、属性、索引器 。

· 一个接口可从一个或多个基接口继承。

接口这个概念在C#和Java中非常相似。接口的关键词是interface,一个接口可以扩展一个或者多个其他接口。按照惯例,接口的名字以大写字母"I"开头。下面的代码是C#接口的一个例子,它与Java中的接口完全一样:

interface IShape  {       void Draw ( ) ;  }

如果你从两个或者两个以上的接口派生,父接口的名字列表用逗号分隔,如下面的代码所示:

interface INewInterface: IParent1, IParent2 { }

然而,与Java不同,C#接口不能包含域(Field)。另外还要注意,在C#中,接口内的所有方法默认都是公用方法。在Java中,方法定义可以带有public修饰符(即使这并非必要),但在C#中,显式为接口的方法指定public修饰符是非法的。例如,下面的C#接口将产生一个编译错误。

interface IShape { public void Draw( ) ; }

下面的例子定义了一个名为IControl 的接口,接口中包含一个成员方法Paint:

interface IControl {  void Paint( ) ;  }

在下例中,接口 IInterface从两个基接口 IBase1 和 IBase2 继承:

interface IInterface: IBase1, IBase2 {     void Method1( ) ;     void Method2( ) ;  }

接口可由类实现。实现的接口的标识符出现在类的基列表中。例如:

class Class1: Iface1, Iface2 {     // class 成员。  }

类的基列表同时包含基类和接口时,列表中首先出现的是基类。例如:

class ClassA: BaseClass, Iface1, Iface2 {     // class成员。  }

以下的代码段定义接口IFace,它只有一个方法:

interface IFace {    void ShowMyFace( ) ;  }

不能从这个定义实例化一个对象,但可以从它派生一个类。因此,该类必须实现ShowMyFace抽象方法:

class CFace:IFace  {    public void ShowMyFace( )   {      Console.WriteLine(" implementation " ) ;     }   }

基接口

一个接口可以从零或多个接口继承,那些被称为这个接口的显式基接口。当一个接口有比零多的显式基接口时,那么在接口的定义中的形式为,接口标识符后面跟着由一个冒号":"和一个用逗号","分开的基接口标识符列表。

接口基:

接口类型列表说明:

· 一个接口的显式基接口必须至少同接口本身一样可访问。例如,在一个公共接口的基接口中指定一个私有或内部的接口是错误的。

· 一个接口直接或间接地从它自己继承是错误的。

· 接口的基接口都是显式基接口,并且是它们的基接口。换句话说,基接口的集合完全由显式基接口和它们的显式基接口等等组成。在下面的例子中

interface IControl {   void Paint( ) ;  }  interface ITextBox: IControl {   void SetText(string text) ;  }  interface IListBox: IControl {   void SetItems(string[] items) ;  }  interface IComboBox: ITextBox, IListBox { }

IComboBox 的基接口是IControl, ITextBox, 和 IlistBox。

· 一个接口继承它的基接口的所有成员。换句话说,上面的接口IComboBox就像Paint一样继承成员SetText 和 SetItems。

· 一个实现了接口的类或结构也隐含地实现了所有接口的基接口。

接口主体

一个接口的接口主体定义接口的成员。

interface-body:  {   interface-member-declarationsopt   }

定义接口成员

接口可以包含一个和多个成员,这些成员可以是方法、属性、索引指示器和事件,但不能是常量、域、操作符、构造函数或析构函数,而且不能包含任何静态成员。接口定义创建新的定义空间,并且接口定义直接包含的接口成员定义将新成员引入该定义空间。

说明:

· 接口的成员是从基接口继承的成员和由接口本身定义的成员。

· 接口定义可以定义零个或多个成员。接口的成员必须是方法、属性、事件或索引器。接口不能包含常数、字段、运算符、实例构造函数、析构函数或类型,也不能包含任何种类的静态成员。

· 定义一个接口,该接口对于每种可能种类的成员都包含一个:方法、属性、事件和索引器。

· 接口成员默认访问方式是public。接口成员定义不能包含任何修饰符,比如成员定义前不能加abstract,public,protected,internal,private,virtual,override 或static 修饰符。

· 接口的成员之间不能相互同名。继承而来的成员不用再定义,但接口可以定义与继承而来的成员同名的成员,这时我们说接口成员覆盖了继承而来的成员,这不会导致错误,但编译器会给出一个警告。关闭警告提示的方式是在成员定义前加上一个new关键字。但如果没有覆盖父接口中的成员,使用new关键字会导致编译器发出警告。

· 方法的名称必须与同一接口中定义的所有属性和事件的名称不同。此外,方法的签名必须与同一接口中定义的所有其他方法的签名不同。

· 属性或事件的名称必须与同一接口中定义的所有其他成员的名称不同。

· 一个索引器的签名必须区别于在同一接口中定义的其他所有索引器的签名。

· 接口方法声明中的属性(attributes), 返回类型(return-type), 标识符(identifier)和形式参数列表(fORMal-parameter-lis)与一个类的方法声明中的那些有相同的意义。一个接口方法声明不允许指定一个方法主体,而声明通常用一个分号结束。

· 接口属性声明的访问符与类属性声明的访问符相对应,除了访问符主体通常必须用分号。因此,无论属性是读写、只读或只写,访问符都完全确定。

· 接口索引声明中的属性(attributes),类型(type)和形式参数列表(formal-parameter-list)与类的索引声明的那些有相同的意义。

下面例子中接口IMyTest包含了索引指示器、事件E、方法F、属性P这些成员:

interface IMyTest{      string this[int index] { get; set; }      event EventHandler E ;      void F(int value)  ;      string P { get; set; }  }  public delegate void EventHandler(object sender, EventArgs e) ;

下面例子中接口IStringList包含每个可能类型成员的接口:一个方法,一个属性,一个事件和一个索引。

public delegate void StringListEvent(IStringList sender);  public interface IStringList  {   void Add(string s);   int Count { get; }   event StringListEvent Changed;   string this[int index] { get; set; }  }

接口成员的全权名

使用接口成员也可采用全权名(fully qualified name)。接口的全权名称是这样构成的。接口名加小圆点"." 再跟成员名比如对于下面两个接口:

interface IControl {      void Paint( ) ;  }  interface ITextBox: IControl {      void GetText(string text) ;  }

其中Paint 的全权名是IControl.Paint,GetText的全权名是ITextBox. GetText。当然,全权名中的成员名称必须是在接口中已经定义过的,比如使用ITextBox.Paint.就是不合理的。

如果接口是名字空间的成员,全权名还必须包含名字空间的名称。

namespace System  {      public interface IDataTable {          object Clone( ) ;      }  }

那么Clone方法的全权名是System. IDataTable.Clone。

定义接口完成后,之后我们关心的就是怎样实现对C#接口的访问。

以上是“C#如何定义接口”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: C#如何定义接口

本文链接: https://www.lsjlt.com/news/294262.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#如何定义接口
    这篇文章主要为大家展示了“C#如何定义接口”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#如何定义接口”这篇文章吧。从技术上讲,接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码...
    99+
    2023-06-17
  • C#接口如何定义和继承
    这篇文章给大家分享的是有关C#接口如何定义和继承的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C#接口定义C#不支持多重继承,但是客观世界出现多重继承的情况又比较多。为了避免传统的多重继承给程序带来的复杂性等问题...
    99+
    2023-06-17
  • C#接口怎么定义
    这篇文章主要介绍“C#接口怎么定义”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#接口怎么定义”文章能帮助大家解决问题。C# 接口(Interface)接口定义了所有类继承接口时应遵循的...
    99+
    2023-06-17
  • Java如何定义interface接口
    今天小编给大家分享一下Java如何定义interface接口的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.接口定义基本介...
    99+
    2023-07-02
  • java中如何定义接口
    这期内容当中小编将会给大家带来有关java中如何定义接口,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式...
    99+
    2023-06-14
  • C#中怎么定义接口
    C#中怎么定义接口,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#接口定义之声明接口声明接口在语法上和声明抽象类完全相同,例如这里有一个银行账户的接口:public&nb...
    99+
    2023-06-17
  • C#接口的定义是什么
    这篇文章主要介绍“C#接口的定义是什么”,在日常操作中,相信很多人在C#接口的定义是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#接口的定义是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!全面...
    99+
    2023-06-17
  • java之如何定义USB接口
    目录java定义USB接口USB类接口类的实现计算机类Usb测试类java接口应用:用接口定义标准总结java定义USB接口 定义USB接口,模拟各USB设备,在电脑开机时依次启动,...
    99+
    2023-05-19
    java定义USB接口 java USB接口 java USB接口定义
  • PHP接口如何定义与实现
    这篇文章主要讲解了“PHP接口如何定义与实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP接口如何定义与实现”吧!一、PHP接口的定义首先我们来了解一下PHP接口的定义,下面是一个非常...
    99+
    2023-07-05
  • Java接口如何定义和使用
    本篇内容介绍了“Java接口如何定义和使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、引入一方面,有时必须从几个类中派生出一个子类,继...
    99+
    2023-06-30
  • Java接口如何自定义使用
    本篇内容主要讲解“Java接口如何自定义使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java接口如何自定义使用”吧!一、引入一方面,有时必须从几个类中派生出一个子类,继承它们所有的属性和方...
    99+
    2023-06-30
  • java如何在接口中定义方法
    在Java中,可以使用`interface`关键字在接口中定义方法。接口中的方法默认是`public abstract`的,也就是说...
    99+
    2023-10-10
    java
  • 如何定义带有属性的接口?
    php小编鱼仔将为大家介绍如何定义带有属性的接口。在PHP中,接口是一种约定,用于定义类应该实现的方法。然而,有时候我们也需要在接口中定义属性。要定义带有属性的接口,我们可以使用常量来...
    99+
    2024-02-10
  • python接口的定义
    什么是接口 ?接口只是定义了一些方法,而没有去实现,多用于程序设计时,只是设计需要有什么样的功能,但是并没有实现任何功能,这些功能需要被另一个类(B)继承后,由 类B去实现其中的某个功能或全部功能。个人的理解,多用于协作开发时,有不同的人在...
    99+
    2023-01-31
    接口 定义 python
  • 如何在java中使用SPI定义接口
    这篇文章给大家介绍如何在java中使用SPI定义接口,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重复的...
    99+
    2023-06-14
  • TypeScript怎么定义接口
    这篇文章主要讲解了“TypeScript怎么定义接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“TypeScript怎么定义接口”吧!接口的作用:接口,英文:interface,其作用可以...
    99+
    2023-06-20
  • java SPI怎么定义接口
    这篇文章主要介绍了java SPI怎么定义接口的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java SPI怎么定义接口文章都会有所收获,下面我们一起来看看吧。使用说明服务提供者提供接口的具体实现后,在jar包...
    99+
    2023-06-30
  • C#入门之定义类成员与接口实现
    目录一、类成员的访问级别二、定义字段三、定义方法四、定义属性五、接口实现六、定义索引器七、运算符重载八、定义事件一、类成员的访问级别 public:可由任何代码访问。private(...
    99+
    2024-04-02
  • Spring MVC如何实现接口Controller定义控制器
    目录实现接口Controller定义控制器方法一:实现接口Controller定义控制器方法二:使用注解@Controller定义控制器详谈Controller(控制器)一、cont...
    99+
    2024-04-02
  • 自定义的ControllerFactory接口如何实现支持Area
    这篇文章将为大家详细讲解有关自定义的ControllerFactory接口如何实现支持Area,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。几个星期之前,有个朋友对我说,他的项目中需要将前后...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作