您当前的位置: 首页 >  c#

光怪陆离的节日

暂无认证

  • 1浏览

    0关注

    1003博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C#程序设计接口的定义和用法

光怪陆离的节日 发布时间:2022-05-17 09:45:28 ,浏览量:1

本文讲解C#程序设计中接口的定义和用法。

  1. 操作流程 1.1. 接口的概念 1.1.1. 基本概念 接口在任何一门面向对象的语言里,都是一个很重要的概念。都知道面向对象语言的三大特征:封装、继承、多态。其中的多态就是靠接口实现的。可以说接口是面向对象语言的精华所在。 接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 “是什么” 部分,派生类定义了语法合同 “怎么做” 部分。 接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。 接口使得实现接口的类或结构在形式上保持一致。 抽象类在某种程度上与接口类似,但是,它们大多只是用在当只有少数方法由基类声明由派生类实现时。 接口本身并不实现任何功能,它只是和声明实现该接口的对象订立一个必须实现哪些行为的契约。 抽象类不能直接实例化,但允许派生出具体的,具有实际功能的类。 1.1.2. 接口和抽象类的区别 一、抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。

    二、接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点: 1、不能实例化; 2、包含未实现的方法声明; 3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);

    另外,接口有如下特性: 接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。 1.1.3. 注意事项 在进行接口映射时,还要注意下面两点:   1、在决定由类中的哪个成员来实现接口成员时,类中显式说明的接口成员比其它成员优先实现。   2、使用Private、protected和static修饰符的成员不能参与实现接口映射。例如:

1.2. 接口的创建 定义接口: MyInterface.cs 接口使用 interface 关键字声明,它与类的声明类似。接口声明默认是 public 的。下面是一个接口声明的实例: interface IMyInterface { void MethodToImplement(); } 以上代码定义了接口 IMyInterface。通常接口命令以 I 字母开头,这个接口只有一个方法 MethodToImplement(),没有参数和返回值,当然我们可以按照需求设置参数和返回值。

值得注意的是,该方法并没有具体的实现。 1.3. 接口的实现 接口的实现,即需要创建类继承接口,然后实现接口里的方法。 实例 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() , 方法名必须与接口定义的方法名一致。

1.4. 接口的继承 接口继承: 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.");
}

} 1.5. C#测试案例 1.5.1. 接口创建 创建一个C#控制台应用程序,如下所示: 在这里插入图片描述

创建一个接口,例如位Cooking,如下所示 在这里插入图片描述 在这里插入图片描述

1.5.2. 类继承接口 需要注意的是:接口中不能定于具体的成员变量,也不能定义方法的具体实现,也能添加私有或公共声明。创建两个方法,如下所示: 在这里插入图片描述

然后创建类实现接口,如下所示: 在这里插入图片描述

注意继承接口之后,接口中的方法必须要实现,如下所示: 在这里插入图片描述 在这里插入图片描述

1.5.3. 类的实例化 在写好Student类之后,其结构为:继承了Cooking接口,即变量和方法的声明在接口中,具体实现在Students类中,在main函数中进行对象实例化,如下所示: 在这里插入图片描述

运行,得到结果如下所示:

在这里插入图片描述

同理,再实现一个Tearch的类继承该接口,对Food的实现做修改,如下所示: 在这里插入图片描述

然后Eat首先输出Student类的实例化对象,然后再输出Tearch类的实例化对象,程序如下:

在这里插入图片描述

执行结果可以看到,显示实现了Student的具体方法,然后输出,再实现Tearch的方法输出,如下所示:

在这里插入图片描述

此外,类可以继承多个接口,其继承方式用逗号隔开即可,也是需要实现所继承接口的所有方法和成员变量。至此,C#接口的定义和基本用法测试完成。

关注
打赏
1665731445
查看更多评论
立即登录/注册

微信扫码登录

0.0419s