码迷,mamicode.com
首页 > Windows程序 > 详细

C#中的interface

时间:2015-10-11 19:38:29      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

接口(interface

接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。

 

接口实际上是一个约定:

如:IClonable, IComparable;

接口是抽象成员的集合:

ICloneable含有方法clone();

IComparable含有方法compare();

接口是一个引用类型,比抽象更抽象。

 

帮助实现多重继承:

技术分享

 

接口的用处:

1.实现不相关类的相同行为,不需要考虑这些类的层次关系;

2.通过接口可以了解对象的交互界面,而不需要了解对象所在的类。例如:public sealed class String: ICloneable, IComparable, IConvertible, IEnumerable.

 

定义一个接口:

 

public interface IStringList

{

void Add ( string s ) ;

int Count{ get; }

string this[int index] { get; set; }

}

//public abstract 默认,这两个关键词不写出来

 

 

实现接口:

 

class 类名 : [父类 , ] 接口, 接口, 接口, ..... 接口

{

public 方法 () { ...... }

}

 

 

显示接口成员实现:

在实现多个接口时,如果不同的接口有同名的方法,为了消除歧义,需要在方法名前写接口名: void IWindow.Close(){......};

调用时,只能用接口调用: (( IWindow ) f ).Close();

 

接口示例:

技术分享
using System;

namespace TestInterface
{
    interface Runner
    {
        void run();
    }
    interface Swimmer
    {
        void swim();
    }
    abstract class Animal
    {
        abstract public void eat();
    }
    class Person : Animal, Runner, Swimmer
    {
        public void run()
        {
            Console.WriteLine("run");
        }
        public void swim()
        {
            Console.WriteLine("swim");
        }
        public override void eat()
        {
            Console.WriteLine("eat");
        }
        public void speak()
        {
            Console.WriteLine("speak");
        }
    }
    class Program
    {        
        static void m1(Runner r)
        {
            r.run();
        }
        static void m2(Swimmer s)
        {
            s.swim();
        }
        static void m3(Animal a)
        {
            a.eat();
        }
        static void m4(Person p)
        {
            p.speak();
        }
        
        public static void Main(string [] args)
        {
            Person p = new Person();
            m1(p);
            m2(p);
            m3(p);
            m4(p);
            Runner a = new Person();
            a.run();
            
            Console.ReadKey(true);
        }
    }
}
使用接口示例

技术分享

C#中的interface

标签:

原文地址:http://www.cnblogs.com/bincoding/p/4869804.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!