C#-接口

 

1、接口就是一组抽象成员的集合。如:

Public interface IDbConnection : IDisposable{}

2、判断一个指定类型是否支持一个接口可以使用try/catchasis关键字。

3、接口可以作为参数、也可以作为方法的返回值,同意的接口可以由多个类型实现。

4、因接口是一组命名的抽象成员,因此对于每个支持该行为的类型中的每个接口方法,都需要输入定义和实现。

5、一个类或结构可以实现许多接口,因此,我们很有可能他会实现包含同名成员的接口,故需要处理命名冲突。

如:

 

 //绘制到表单上
        public interface IDrawToForm
        {
            void Draw();
        }

        //绘制到内存中
        public interface IDrawToMemory
        {
            void Draw();
        }

        //呈现到打印机
        public interface IDrawToPrinter
        {
            void Draw();
        }
View Code

上述中每一个接口都定义了Draw()方法且名称相同(都没有参数)。

 

 class Octagon : IDrawToForm, IDrawToMemory, IDrawToPrinter
        {
            //对某个接口显示绑定Draw()
            void IDrawToForm.Draw()
            {
                Console.WriteLine("Drawing to form..");
            }
            void IDrawToMemory.Draw()
            {
                Console.WriteLine("Drawing to memory..");
            }
            void IDrawToPrinter.Draw()
            {
                Console.WriteLine("Drawing to printer..");
            }
        }
View Code

显示实现接口成员,大致模式可以归结为:

 returnType InterfaceName.MethodName(params)

但是使用这种语法时不能提供访问修饰符,先是实现的成员总是自动为私有的。如下就是错误的:

            //错误,不能访问修饰符
            public void IDrawToForm.Draw()
            {
                Console.WriteLine("Drawing to form..");
            }
View Code

6、接口类型可多重继承,也就是一个接口可以扩展多个基接口。

7、接口在以下情况中特别有用:

*只有一个层次结构,但是只有一部分派生类支持某个公共行为;

*需要构建的公共行为跨多个层次结构,而且除了System.Object以外,没有其他公共父类。

 

posted @ 2016-07-19 17:13  相约荞麦  Views(120)  Comments(0Edit  收藏  举报