美文网首页
【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# 接口

    接口是什么 接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。接口可有方法、属性、事件和索引器...

  • 提供 CTP行情与交易SDK的C#接口

    提供 CTP行情与交易SDK的C#接口 QQ 516333132

  • 接口的作用

    C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,...

  • Lua 异常处理

    在写lua代码,特别是有热更新功能的项目中,c#中新加了接口之后,然后在lua中调用了此接口。但是项目中c#代码是...

  • C#接口

    继承接口后,我们需要实现接口的方法 MethodToImplement() , 方法名必须与接口定义的方法名一致

  • C#接口

    C# 接口中能否定义字段? 答案 是不能。 语法上不允许。 也不符合接口的目标。 接口可以看成是对实现的约束, 而...

  • C#接口

    参考: 接口: https://www.runoob.com/csharp/csharp-interface.ht...

  • c#接口

    接口与class类似,但是它只为其成员提供了规格,而没有提供具体的实现 接口的成员都是隐式抽象的 一个class或...

  • C#接口

    接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同“是什么”部分,派生类定义了语法合同“怎么做”部分。...

  • C# 8.0 中的新增功能

    C# 8.0 向 C# 语言添加了以下功能和增强功能: Readonly 成员 默认接口方法 模式匹配增强功能:S...

网友评论

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

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