美文网首页
【29】C# 接口

【29】C# 接口

作者: 业余玩家 | 来源:发表于2018-12-07 00:00 被阅读20次

    接口是什么

    接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。接口可有方法、属性、事件和索引器或这四种成员的任何组合类型,但不能包含字段。接口只包含了成员的声明,在继承的类中进行实现。

    接口的特点

    接口只做声明。
    所有接口成员的默认访问类型都是public。
    接口不能直接实例化。
    必须实现接口的所有方法。
    C#是单继承,利用接口可以实现多继承。

    接口的声明

        public interface Animalone
        {
            //接口方法不能用修饰符修饰
            void ToSpeak();
        }
    

    接口的实现

        public class Catone : Animalone
        {
            public void ToSpeak()
            {
                Console.Write("喵喵喵\r\n");
            }
        }
    
        public class Dogone : Animalone
        {
            public void ToSpeak()
            {
                Console.Write("汪汪汪\r\n");
            }
        }
    
        public class birdone : Animalone
        {
            public void ToSpeak()
            {
                Console.Write("喳喳喳\r\n");
            }
        }
    

    接口的继承

        //接口继承
        //C# 单继承,使用接口可以继承多个基类
        public interface Animaltwo : Animalone
        {
            void EatFood();
        }
    
        //继承子接口时,要实现所有接口的方法
        public class Cattwo : Animaltwo
        {
            public void EatFood()
            {
                Console.Write("猫粮\r\n");
            }
    
            public void ToSpeak()
            {
                Console.Write("喵喵喵\r\n");
            }
        }
    

    显示接口的实现

    //显示接口实现
        interface AnimalThree 
        {
            void Move();
        }
    
        interface Animalfour
        {
            void Move();
        }
    
        public class Cat : AnimalThree, Animalfour
        {
            void AnimalThree.Move()
            {
                Console.Write("run\r\n");
            }
            void Animalfour.Move()
            {
                Console.Write("swarm\r\n");
            }
        }
    

    完整代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TestInterface
    {
        //接口
        //定义一个接口,只能做方法声明,继承自接口的类,必须实现接口方法
        public interface Animalone
        {
            //接口方法不能用修饰符修饰
            void ToSpeak();
        }
        public class Catone : Animalone
        {
            public void ToSpeak()
            {
                Console.Write("喵喵喵\r\n");
            }
        }
    
        public class Dogone : Animalone
        {
            public void ToSpeak()
            {
                Console.Write("汪汪汪\r\n");
            }
        }
    
        public class birdone : Animalone
        {
            public void ToSpeak()
            {
                Console.Write("喳喳喳\r\n");
            }
        }
    
        public class zooone 
        {
            public void Speak(Animalone animals)
            {
                animals.ToSpeak();
            }
        }
    
        //接口继承
        //C# 单继承,使用接口可以继承多个基类
        public interface Animaltwo : Animalone
        {
            void EatFood();
        }
    
        //继承子接口时,要实现所有接口的方法
        public class Cattwo : Animaltwo
        {
            public void EatFood()
            {
                Console.Write("猫粮\r\n");
            }
    
            public void ToSpeak()
            {
                Console.Write("喵喵喵\r\n");
            }
        }
    
        public class zootwo
        {
            public void EatFood(Animaltwo animals)
            {
                animals.EatFood();
            }
    
            public void Tospeak(Animaltwo animals)
            {
                animals.ToSpeak();
            }
        }
        //显示接口实现
        interface AnimalThree 
        {
            void Move();
        }
    
        interface Animalfour
        {
            void Move();
        }
    
        public class Cat : AnimalThree, Animalfour
        {
            void AnimalThree.Move()
            {
                Console.Write("run\r\n");
            }
            void Animalfour.Move()
            {
                Console.Write("swarm\r\n");
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                zooone z = new zooone();
                z.Speak(new Catone());
                z.Speak(new Dogone());
                z.Speak(new birdone());
    
                zootwo ztwo = new zootwo();
                ztwo.EatFood(new Cattwo());
                ztwo.Tospeak(new Cattwo());
                
    
                Cat cat = new Cat();
                AnimalThree three = cat;
                three.Move();
                Animalfour four = cat;
                four.Move();
    
                Console.Read();
            }
        }
    }
    
    2018-12-06_235846.png

    参考资料

    https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/interfaces/

    C# 接口《通俗解释》https://www.cnblogs.com/hamburger/p/4681681.html

    相关文章

      网友评论

          本文标题:【29】C# 接口

          本文链接:https://www.haomeiwen.com/subject/krgpxqtx.html