`
fdyang
  • 浏览: 79658 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

(C#)接口(Interface)

阅读更多

(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#接口interface用法,实例分析了C#接口的基本使用方法,需要的朋友可以参考下

    C#接口(Interface)用法分析.pdf

    C#接口(Interface)用法分析.pdf

    C# 控制台 interface接口实例

    通过模拟duck游戏功能来介绍interface的使用 其中使用了策略模式 推荐先看代码再看ppt,最后再体会策略模式的定义 策略模式定义: 针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互...

    c# 接口interface基础入门小例子

    与抽象类的区别: /// 1,abstract可以有具体方法和抽象方法(必须有一个抽象方法),interface没有方法实现 /// 2,abstract可以有构造函数和析构函数,接口不行 /// 3,一个类可以实现多个interface,...

    C# 编程之实现接口

    接口(interface)用来定义一种程序的协定。...在前面的文章中,我们已经对C#接口的概念,如何定义接口以及如何对接口进行访问等问题进行了详细的讨论。在这些知识的基础上,本文我们将来了解实现接口的方法。

    C#接口的初步学习.doc

    接口(interface)用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以...

    C#接口(Interface)用法分析

    主要介绍了C#接口(Interface)用法,较为详细的分析了C#中接口的功能、实现及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    c# 接口详解

    接口(interface)用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以...

    C#中接口(interface)的理解

    .都是“虚的”不能被实例化,这也...接口支持多重继承,而C#中,类之支持单一继承,接口实际表示的是一种承载能力。 下面是接口的一个简单定义: 代码如下:interface SampInterface1 { string this[ int index] { 

    C#创建 TInterface泛型接口实例

    摘要:C#源码,文件操作,TInterface,创建泛型接口 C#创建或使用一个 TInterface泛型接口的源码实例,大致实现的思路:创建一个泛型接口public interface IGenericInterface,接口中调用CreateInstance方法,实现上面...

    C# 匹配NetworkInterface里面的网口和SharpPcap里面网口,解决抓包的时候如何在多个网口中选取所需网口的问题

    C# 匹配NetworkInterface里面的网口和SharpPcap里面网口。在多个以太网口的电脑上,使用SharpPcap来抓包的时候需要选择网口,但是SharpPcap里面的网口名字和微软系统里面的网口名字又不相同,“控制面板\网络和 ...

    C#接口应用小程序

    这是个简单的程序例子,主要是对接口的简单应用,初学者看了之后有启发

    C#_接口多继承.txt

    C#接口的例子 interface IPrint { void Print(); 接口多继承.txt

    C#调用Delphi接口(ITest = interface)

    Delphi开发的导出Interface的DLL,使用C#调用的技术

    发那科机械手上位机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#接口调用方法展示

    通过继承类调用的接口方式,很有特点。

    C#中接口(Interface)的深入详解

    在 C# 语言中,类之间的继承关系仅支持单重继承,而接口是为了实现多重继承关系设计的。一个类能同时实现多个接口,还能在实现接口的同时再继承其他类,并且接口之间也可以继承。无论是表示类之间的继承还是类实现...

Global site tag (gtag.js) - Google Analytics