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

本文讲解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#接口的定义和基本用法测试完成。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C#是一种面向对象的编程语言,它是由微软公司开发的一种通用型编程语言。下面是关于面向对象程序设计C#的介绍: 1. 类和对象:C#是一种基于类的编程语言,它支持创建类和对象。类是一种模板,用于定义对象的属性和行为。对象是类的实例,可以通过实例化类来创建。 2. 封装:C#支持封装,即将数据和方法封装在类中,并通过访问修饰符来控制对类成员的访问权限。这样可以保护数据的安全性,并提供统一的接口供外部使用。 3. 继承:C#支持继承,即一个类可以派生出子类,子类可以继承父类的属性和方法,并可以添加自己的特性。继承可以实现代码的重用和扩展。 4. 多态:C#支持多态,即一个对象可以以多种不同的方式工作。多态性通过虚函数和抽象类来实现。虚函数允许子类重写父类的方法,而抽象类定义了一组抽象方法,子类必须实现这些方法。 5. 接口C#支持接口接口定义了一组方法和属性的规范,类可以实现接口并提供具体的实现。接口可以实现多继承的效果,增加了代码的灵活性。 6. 构造函数和析构函数:C#中的构造函数用于初始化对象的状态,析构函数用于释放对象占用的资源。构造函数在创建对象时自动调用,而析构函数在对象被销毁时自动调用。 7. 异常处理:C#提供了异常处理机制,可以捕获和处理程序运行过程中的异常。通过使用try-catch语句块,可以捕获异常并采取相应的处理措施,保证程序的稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光怪陆离的节日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值