C#入门10.4——显式实现接口

隐式实现接口

    既可用接口调用方法,也可用具体类调用方法

显式实现接口

实现接口的方法前不能用访问修饰符public,必须显式指定接口名称

    返回值类型 接口名称.接口方法

    只能是通过接口来调用,而不能通过具体类来做

同时实现 隐式实现接口和显式实现接口

    这样完成了对一个接口成员提供多份实现实体,访问时可以用类的实例和接口的引用来分别调用这两种实现实体。显式才是真正的接口实现方式。

结论:当显式实现方式存在时,隐式实现方式就失效了。但这不能表示显式实现方式就不好,当一个类实现的多个接口中具有相同的方法时,用显式方式来专门实现某个接口的方法是就显得非常有用。

class Program
    {
        static void Main(string[] args)
        {
            
            
            IFlyable1 myEagle1 = new Eagle();//隐式实现接口 接口调用
            myEagle1.Fly();
            
            Eagle myEagle2 = new Eagle();//隐式实现接口 类调用
            myEagle2.Fly();

            IFlyable1 myBallon1 = new Balloon();//显式实现接口 指定方法到底是哪个接口的
            myBallon1.Fly();
            IFlyable2 myBallon2 = new Balloon();
            myBallon2.Fly();
            Balloon myBalloon3 = new Balloon();
            // myBalloon3.Fly();

           
            IFlyable1 mySparrow1 = new Sparrow();//显式实现接口
            mySparrow1.Fly();
            Sparrow mySparrow2 = new Sparrow();//隐式实现接口
            mySparrow2.Fly();
            Console.ReadKey();
        }
    }
public abstract/*抽象类*/ class Bird
    {
        public abstract void Eat();
    }
 class Sparrow:Bird,IFlyable1
    {
        public void Fly()
        {
            Console.WriteLine("隐式实现 麻雀飞枝头");
        }
        void IFlyable1.Fly()
        {
            Console.WriteLine("显式实现 麻雀飞枝头");
        }
        public override void Eat()
        {
            Console.WriteLine("麻雀吃粮食");
        }
    }
 class Eagle:Bird,IFlyable1
    {
        public override void Eat()
        {
            Console.WriteLine("老鹰吃小鸡");
        }
        public void Fly()
        {
            Console.WriteLine("鹰击长空");
        }
    }
class Balloon:IFlyable1,IFlyable2
    {
        void IFlyable1.Fly()//显式实现接口
        {
            Console.WriteLine("我是1中的Fly");
        }
        void IFlyable2.Fly()
        {
            Console.WriteLine("我是2中的Fly");
        }
    }
 interface IFlyable1
    {
        void Fly();

    }
 interface IFlyable2
    {
        void Fly();

    }







你可能感兴趣的:(C#)