前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#-接口

C#-接口

作者头像
kdyonly
发布2023-03-03 19:40:05
2520
发布2023-03-03 19:40:05
举报
文章被收录于专栏:个人编程笔记个人编程笔记

浏览量 1

接口是什么

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

接口的特点

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

接口的声明

代码语言:javascript
复制
public interface Animalone
{        //接口方法不能用修饰符修饰
    void ToSpeak();
}

接口的实现

代码语言:javascript
复制
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");
    }
}

接口的继承

代码语言:javascript
复制
//接口继承
//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");
    }
}

显示接口的实现

代码语言:javascript
复制
//显示接口实现
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");
    }
}
完整代码
```c#
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();
        }
    }
}

参考资料

https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/interfaces/ C# 接口《通俗解释》 https://www.cnblogs.com/hamburger/p/4681681.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接口是什么
  • 接口的特点
  • 接口的声明
  • 接口的实现
  • 接口的继承
  • 显示接口的实现
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档