zoukankan      html  css  js  c++  java
  • 只谈接口(interface)

    接口只包含方法、委托或事件的签名。方法的实现是在实现接口的类中完成的(接口的命名以I为开头),如下面的示例所示:       
    interface ISampleInterface
    {
        void SampleMethod();
    }

    class ImplementationClass : ISampleInterface
    {
        // Explicit interface member implementation:
        void ISampleInterface.SampleMethod()
        {
            // Method implementation.
        }

        static void Main()
        {
            // Declare an interface instance.
            ISampleInterface obj = new ImplementationClass();

            // Call the member.
            obj.SampleMethod();
        }
    }
    接口可以是命名空间或类的成员,并且可以包含下列成员的签名:方法、属性、索引器、事件,但不能是常量、域、操作符、构造函数或析构函数,而且不能包含任何静态成员。
    接口定义创建新的定义空间,并且接口定义直 接包含的接口成员定义将新成员引入该定义空间。


    对接口的一些认识:
    1。接口提供一种规范,是对不同类中的共性的一种抽象,一种标准化,没有实例化,比如说有类狗、猫等等,他们都有一个共同的action:"call",那么我们就可以把这个cll的动作抽象出来,定义在接口中,在类中分别实现,有了标准,在以后的维护和扩展中减少很多工作量。
    2。接口可以多重继承。
    3。接口可以实现多态,For example:

       class UseInterface
        {
            interface Iinstrument
            {
                void Play();
            }
            class Violin : Iinstrument
            {
                public void Play()
                {
                    Console.WriteLine("这是小提琴的演奏。");
                }
            }
            class Flute : Iinstrument
            {
                public void Play()
                {
                    Console.WriteLine("这是长笛的演奏。");
                }
            }
            static void CallFoo(Iinstrument instrument)
            {
                instrument.Play();
            }
            public static void Main(string[] args)
            {
                Violin v = new Violin();
                Flute f = new Flute();
                CallFoo(v);
                CallFoo(f);
                Console.ReadLine();
            }
        }

    4。接口的使用问题,接口的优点是很明显的了,但是我们不能为了接口而接口,如果滥用接口,造成资源的浪费。在不同的类中共性越多的,就越要定义位接口,但是如果实现是一样的话就可以考虑用抽象类了,而不是接口了。
    5。上面提到抽象类,在实际的使用,到底是使用抽象类还是使用使用接口,需要更具不同的情况做不同的选择,没有一定的说法。
          这里没有具体的将接口的怎么运用说明,只是将自己的理解说明一下,肯定也有认识不足的地方。。。
          理论知识,最终还是需要运用到实践中,才会有更加深刻的认识,积累经验。。。

  • 相关阅读:
    .ashx
    svn设置过滤内容
    .NET开发人员应该下载的十个必备工具(1)
    C#中操作XML (节点添加,修改,删除完整版)
    NVelocity模板引擎的注意事项
    什么是好的程序员?
    SQLSERVER2005登录时出错
    240多个jQuery插件(转)
    自己搭建svn
    一元三次方程求解
  • 原文地址:https://www.cnblogs.com/oldhorse/p/758662.html
Copyright © 2011-2022 走看看