您的位置: 网站首页 > 程序开发 > C#程序设计 > 第6章 C#面向对象 > 【6.6 接 口】

6.6 接 口

 

接口是面向对象编程技术的一个重要内容。在代码中,接口主要用于负责功能的定义。项目中通过接口来规范类、操作类以及抽象类的概念。

6.6.1  什么是接口

在代码中可以通过接口对类的构成进行限制。接口不负责功能的实现,只负责功能的定义,而类负责功能的具体实现。接口和类的定义很相似。如下的代码定义了一个接口:

Interface IMyInterface

{

}

6.6.2  声明接口

本小节通过一个实例演示一个定义比较完整的接口。

1.目的说明

创建一个Windows控制台应用程序,演示接口的声明。

2.实现步骤

1)创建一个名为InterfaceCreate的控制台应用程序项目。

2)修改Program.cs文件的内容如下:

namespace InterfaceCreate

{

    class Program

    {

        static void Main(string[] args)

        {

        }

    }

 

    // IMyInterface接口

    interface IMyInterface

    {

        // SayHello方法

        void SayHello();

 

        // Hello属性

        string Hello

        {

            get;

            set;

        }

    }

}

3.运行结果

该程序无结果。

4.代码分析

可以看到,无论是属性还是方法,都只有定义而并没有代码实现。如果在SayHello方法中添加代码实现,编译时Visual Studio 2005将会提示错误。

6.6.3  实现接口

有定义就有实现,接口中进行了相关的定义,在相关的实现类中就需要对接口中的定义进行实现。下面介绍一个实例,定义并实现一个接口。

1.目的说明

创建一个Windows控制台应用程序,演示接口的定义和实现。

2.实现步骤

1)创建一个名为InterfaceImpl的控制台应用程序项目。

2)修改Program.cs文件的内容如下:

namespace InterfaceImpl

{

    class Program

    {

        static void Main(string[] args)

        {

            MyClass a = new MyClass();

 

            a.Hello = "你好,王先生!";

 

            a.SayHello();

        }

    }

 

    // IMyInterface接口

    interface IMyInterface

    {

        // SayHello方法

        void SayHello();

 

        // Hello属性

        string Hello

        {

            get;

            set;

        }

    }

 

    class MyClass:IMyInterface

    {

        #region IMyInterface 成员

 

        public void SayHello()

        {

            Console.WriteLine(Hello);

        }

 

        public string Hello

        {

            get

            {

                return hello ;

            }

            set

            {

                hello = value ;

            }

        }

 

        #endregion

 

        string hello = string.Empty;

    }

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图6-19所示。

6-19  运行结果

4.代码分析

代码中定义了一个接口IMyInterface,类MyClass实现了该接口。在Main方法中声明了一个MyClass的实例a,并调用了a的相关属性和方法。类MyClass完整地实现了接口IMyInterface的定义。