interfaces

直接进入我们精彩的内容

==接口与抽象类类似,都无法申明变量

它们的区别与相似之处:

Abstract Class Vs. Interface 
ØInterfaces are very similar to abstract classes.
ØC# doesn’t allow multiple inheritance with classes.
ØC# does allow to implement any number of interfaces and derive from one base class.

一个类可以有多个接口,但是必须实现接口里的所有函数

来举个例子:

namespace ConsoleApplication1
{
    class Program
    {

        public interface IStorable
        {
            void Read();
            void Write();
        }

        interface ICompressible
        {
            void Compress();
            void Decompress();
        }
        interface ILoggedCompressible : ICompressible
        {
            void LogSavedBytes();
        }

        public class Document : IStorable, ICompressible
        {
            public void Read()
            {
                Console.WriteLine("read");
            }
            public void Write()
            {
                Console.WriteLine("write");
            }
            public void Compress()
            { }
            public void Decompress()
            { }

        }


        static void Main(string[] args)
        {
            Document document = new Document();
            document.Write();
            


        }
    }
}

  //类里的函数必须public

接下来介绍显式与隐式接口里函数的定义

增加了一个新的接口:

interface ITalk
{
    void Talk();
    void Read();
}

实现显式定义:

void ITalk.Read()
            {
                Console.WriteLine("reeeead");
            }

//这里不加public

隐式加virtual

        static void Main(string[] args)
        {
            Document firstDocument = new Document();
            firstDocument.Read();
            ITalk secondDocument = firstDocument;
            secondDocument.Read();

        }

  

显示定义的接口方法,不能有abstract, virtual, override, or new 修饰符。

因为显示实现的接口成员不能继承。

最后我感觉接口的使用要比抽象类方便很多。

posted @ 2015-04-26 15:31  一边挖鼻屎一边  阅读(289)  评论(0编辑  收藏  举报