前言
接口的申明
接口的定义与组成: 指描述可属于任何类或结构的一组功能,就是一种规范、功能。可由属性、方法、事件、索引器或这四种成员类型的任意组合构成。
命名规则: 接口名称习惯性以 I
开头,跟在 I
后的第一个字符也是大写的。
注意事项: 接口不能包含字段;接口成员不允许添加访问修饰符,默认就是 public
;成员也不能加 static
访问修饰符;接口不能包含实现其成员的任何代码,而只能定义成员本身(如不允许写具有方法体的函数);实现过程必须在实现接口的类中完成。
接口的实现与继承
- 实现过程必须在实现接口的类中完成;
- 类继承具有单根性,接口可多重继承;
- 父接口也成为该接口的显示基接口;
- 接口多重继承时,派生接口名与父接口用冒号隔开,多个父接口之间用逗号隔开。
代码演示
项目准备
创建一个控制台应用程序,并在项目中创建一个接口(interface)文件,命名为 IDemo.cs
。
继续在项目中创建一个类文件,命名为: Demo.cs
。
接口的定义
在接口文件 IDemo.cs
中键入如下代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace InterfaceDemo
{
public interface IDemo
{
// 定义了接口 getSum() 获取两个 double 数据之和
double getSum(double a,double b);
// 定义了接口 getString() 获取一个字符串
string getString();
}
}
接口的实现
在类文件 Demo.cs
中键入如下代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace InterfaceDemo
{
class Demo : IDemo
{
// 实现接口 getSum() 求出两个 double 数据之和
public double getSum(double a, double b)
{
double c= a + b;
return c;
}
// 实现接口 getString() 返回一个字符串
public string getNum()
{
return "这是一个测试的接口";
}
}
}
接口的使用
在文件 Program.cs
中键入如下代码:
using System;
namespace InterfaceDemo
{
class Program
{
static void Main(string[] args)
{
IDemo demo= new Demo();
string str = demo.getNum();
Console.WriteLine("接口返回的字符串:{0}",str);
double sum= demo.getSum(2.5, 3.6);
Console.WriteLine("接口求出的两个数之和:{0}",sum);
Console.ReadLine();
}
}
}
程序运行结果如下所示:
总结
看到这里,是否感觉接口这东西有点 多此一举 呢?如果不理解接口的含义的话,可能会有这样的疑惑。
看了网上的很多博客和各路大神的见解,我的个人理解是:提高代码的可扩展性可维护性,作用之一是封装代码,我们在使用接口的时候只关注定义的接口及接口实现的功能,具体接口实现功能的那个类中的代码怎么写的并不关心。
如有高见,下方评论!