(C#)接口(Interface)
接口是表示一组成员函数的应用类型。
- 接口是一个引用类型,通过接口可以实现多重继承。
- C#中接口可有new、public、protected、internal、private等修饰符。
- 接口中只能声明抽象成员(所以不能直接对接口进行实例化(即不能使用new操作符声明一个接口的实例对 象)),而不能声明
共有的域或者私有的成员变量。
- 接口声明不包括数据成员,只能包含方法、属性、事件、索引等成员。
- 接口名称一般都以“I”作为首字母(当然不这样声明也可以),这也是接口和类的一个区别之一。[1]
- 接口成员的访问级别是默认的(隐式public),所以在声明时不能再为接口成员指定任何访问修饰符,否则编译器会报错。
- 接口成员不能有static、abstract、override、vritual修饰符,使用new修饰符不会报错,但会给出警告说不需要关键字new。
- 在声明接口成员的时候,不准为接口成员编写具体的可执行代码,也就是说,只要在对接口进行声明时指明接口的成员名称和参
数就可以了。
- 接口一旦被继承,子类需要把接口中所有成员实例化(通过具体的可执行代码实现接口抽象成员的操作)。
总结起来说,使用C#接口应注意几个问题:
- C#中的接口是独立于类来定义的。这与 C++模型是对立的,在 C++中接口实际上就是抽象基类。
- 接口和类都可以继承多个接口。
- 类可以继承一个基类,接口根本不能继承类。这种模型避免了 C++的多继承问题,C++中不同基类中的实现可能出现冲突。因此也
不再需要诸如虚拟继承和显式作用域这类复杂机制。C#的简化接口模型有助于加快应用程序的开发。
- 一个接口定义一个只有抽象成员的引用类型。C#中一个接口实际所做的,仅仅只存在着方法标志,但根本就没有执行代码。这就
暗示了不能实例化一个接口,只能实例化一个派生自该接口的对象。
- 接口可以定义方法、属性和索引。所以,对比一个类,接口的特殊性是:当定义一个类时,可以派生自多重接口,而你只能可以
从仅有的一个类派生。
下面开始详细的解释接口和相关应用.
声明接口:
- 接口声明不包含数据成员。
- 接口声明只能包含如下类型的静态成员函数的声明:(方法,属性,事件,索引)
- 这些函数成员的声明不能包含任何实现代码,而在每个成员声明的主体后必须使用分号。
- 按照惯例,接口名称必须从大写的I开始(例如IMyInterface1).
- 接口的成员函数是隐世public的,不允许有任何访问修饰符(如private,public 等).
//具有两个方法成员接口的声明:
interface IMyInterface1
{
int DoStuff ( int nVar1 , long lVar2 );
double DoOtherStuff ( string s, long x );
}
实现接口
- 只有类和结构才能实现接口.
- 在基类列表中包括接口名称,为每一个接口的成员提供实现.
class MyClass: IMyInterface1 //IMyInterface1 是接口名
{
int DoStuff ( int nVar1, long lVar2 )
{ ... }
double DoOtherStuff ( string s, long x )
{ ... }
}
- 如果类从基类继承并实现接口,基类列表中的基类名称必须放在任何接口之前。
class Derived: MyBaseClass, IInterface1,IInterface2,IInterface3 // IInterface1,IInterface2,IInterface3 是接口名
{
...
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//声明接口
interface IIfc1
{
void PrintOut(string s);
}
//声明类,并实现接口
class MyClass : IIfc1
{
public void PrintOut(string s)
{
Console.WriteLine("Calling through :{0}", s);
}
}
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
MyClass mc = new MyClass(); //创建类的实例。
mc.PrintOut("object."); //调用方法
}
}
}
分享到:
相关推荐
主要介绍了C#接口interface用法,实例分析了C#接口的基本使用方法,需要的朋友可以参考下
C#接口(Interface)用法分析.pdf
通过模拟duck游戏功能来介绍interface的使用 其中使用了策略模式 推荐先看代码再看ppt,最后再体会策略模式的定义 策略模式定义: 针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互...
与抽象类的区别: /// 1,abstract可以有具体方法和抽象方法(必须有一个抽象方法),interface没有方法实现 /// 2,abstract可以有构造函数和析构函数,接口不行 /// 3,一个类可以实现多个interface,...
接口(interface)用来定义一种程序的协定。...在前面的文章中,我们已经对C#接口的概念,如何定义接口以及如何对接口进行访问等问题进行了详细的讨论。在这些知识的基础上,本文我们将来了解实现接口的方法。
接口(interface)用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以...
主要介绍了C#接口(Interface)用法,较为详细的分析了C#中接口的功能、实现及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
接口(interface)用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以...
.都是“虚的”不能被实例化,这也...接口支持多重继承,而C#中,类之支持单一继承,接口实际表示的是一种承载能力。 下面是接口的一个简单定义: 代码如下:interface SampInterface1 { string this[ int index] {
摘要:C#源码,文件操作,TInterface,创建泛型接口 C#创建或使用一个 TInterface泛型接口的源码实例,大致实现的思路:创建一个泛型接口public interface IGenericInterface,接口中调用CreateInstance方法,实现上面...
C# 匹配NetworkInterface里面的网口和SharpPcap里面网口。在多个以太网口的电脑上,使用SharpPcap来抓包的时候需要选择网口,但是SharpPcap里面的网口名字和微软系统里面的网口名字又不相同,“控制面板\网络和 ...
这是个简单的程序例子,主要是对接口的简单应用,初学者看了之后有启发
C#接口的例子 interface IPrint { void Print(); 接口多继承.txt
Delphi开发的导出Interface的DLL,使用C#调用的技术
FANUC Robot Interface (FRRJIF.DLL) is Windows software module to read/write robot data with robot over Ethernet. FANUC机械手接口(FRRJIF.DLL)是Windows软件模块...需要连接机械手C# Demo程式+vx: genesisv92
通过继承类调用的接口方式,很有特点。
在 C# 语言中,类之间的继承关系仅支持单重继承,而接口是为了实现多重继承关系设计的。一个类能同时实现多个接口,还能在实现接口的同时再继承其他类,并且接口之间也可以继承。无论是表示类之间的继承还是类实现...