c#中的接口

来源:互联网 发布:宿州影楼美工招聘兼职 编辑:程序博客网 时间:2024/06/02 01:16


一、接口定义

提供了一组方法声明的统一命名(不提供实现,实现是继承他的类的事)。


二、接口的使用

2.1什么时候使用接口

当你想要用类做多重继承的时候,就要用接口(类不支持多重继承)。

实例1:狗继承动物


using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{    public abstract class Animal    {        public void EatFood()        {            Console.WriteLine("我能吃东西");        }    }    public class Dog : Animal    {        public Dog()        {            Console.WriteLine("我是狗");        }    }      class Program    {        static void Main(string[] args)        {            Dog dog = new Dog();            dog.EatFood();          }    }}



实例2:特殊的狗(会表演)--接口


using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{    public abstract class Animal    {        public void EatFood()        {            Console.WriteLine("我能吃东西");        }    }    public class Dog : Animal    {        public Dog()        {            Console.WriteLine("我是狗");        }    }    //定义表演接口    public interface IAnimalShow    {        void Show();    }    //定义导盲接口    public interface IAnimalHelpPeople    {        void Help();    }    //定义特殊狗类(表演)    public class SpecialDog : Animal, IAnimalShow,IAnimalHelpPeople    {        public SpecialDog()        {            Console.WriteLine("我是特殊的狗");        }        隐式接口        public void Show()        {            Console.WriteLine("我会表演");        }    class Program    {        static void Main(string[] args)        {            Dog dog = new Dog();            dog.EatFood();            SpecialDog s_dog = new SpecialDog();            s_dog.Show();            s_dog.Help();        }    }}



2.2显式接口和隐式接口的对比

1.隐式:类和接口都可以访问接口中的方法。显式:接口方法只能通过接口来完成,因此接口方法默认为私有

2.单个接口推荐使用隐式接口

3.实现多个接口推荐用显式接口

实例3:显式接口与隐式接口


using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{    public abstract class Animal    {        public void EatFood()        {            Console.WriteLine("我能吃东西");        }    }    public class Dog : Animal    {        public Dog()        {            Console.WriteLine("我是狗");        }    }    //定义表演接口    public interface IAnimalShow    {        void Show();    }    //定义能够帮助人类狗的接口    public interface IAnimalHelpPeople    {        void Help();    }    //定义特殊狗类(表演)    public class SpecialDog : Animal, IAnimalShow,IAnimalHelpPeople    {        public SpecialDog()        {            Console.WriteLine("我是特殊的狗");        }        //显式接口        void IAnimalShow.Show()        {            Console.WriteLine("我会表演");        }        void IAnimalHelpPeople.Help()        {            Console.WriteLine("我能帮助人");        }    }    class Program    {        static void Main(string[] args)        {            Dog dog = new Dog();            dog.EatFood();            SpecialDog s_dog = new SpecialDog();            IAnimalShow idogshow = (IAnimalShow)s_dog;            idogshow.Show();            IAnimalHelpPeople idoghelp = (IAnimalHelpPeople)s_dog;            idoghelp.Help();            Console.Read();        }    }}



三、接口与抽象类

3.1对比

1.定义:抽象类使用,接口使用。他们都不能实例化。

2.抽象类可以包含虚方法,非抽象方法和静态成员。接口只能定义方法,不能实现。

3.抽象类不能够实现多继承,接口可以多继承。

4.抽象类:类实现继承:子类属于基类 is关系(A是B)。类实现接口:CAN-DO关系,即类能够实现这个接口。(A能做B)



参考:http://www.cnblogs.com/zhili/

原创粉丝点击