• 友链

  • 首页

  • 文章归档
h u a n b l o g
h u a n b l o g

欢

HI,Friend

02月
16
C#

C#接口

发表于 2022-02-16 • 字数统计 1894 • 被 589 人看爆

定义

接口是指定一组函数成员,而不实现他们的引用类型。 
包含方法、属性、索引器和事件的声明
由类和结构实现方法(和抽象类一样)
关键字:interface  接口名称大写I开始

特点

  • 引用类型
  • 不能实例化接口,只能包含其成员的签名
  • 既不能包含构造函数,也不能有字段
  • 不允许包含运算符重载
  • 不允许声明成员修饰符,成员隐式为pubilc
  • 不能声明virtual
  • 声明由继承该接口的类来实现,就是类实现接口,那么就要实现接口以及继承的接口所有成员
  • 当一个类既继承基类,又继承接口的时候,必须基类写在前面,基类和接口用逗号隔开,一个类只能有一个基类,可以继承许多接口
  • 接口可以多个接口继承,但是不能继承类

示例

interface IClimbTree
{
    void ClimbTree();
}

interface ICatchMice
{
    void CatchMice();
}

public class Pet
{
    public void Eat()
    {
        Console.WriteLine("吃着真香");
    }
}

public class Cat: Pet, IClimbTree, ICatchMice
{
    public void ClimbTree()
    {
        Console.WriteLine("我会爬树");
    }

    public void CatchMice()
    {
        Console.WriteLine("我会抓老鼠");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Cat cat = new Cat();
        cat.Eat();
        cat.ClimbTree();
        cat.CatchMice();
        Console.ReadLine();
    }
}

结果

吃着真香
我会爬树
我会抓老鼠

接口与抽象类的区别

  • 接口用于规范,抽象类用于共性。
  • 接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。
  • 抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。
  • 抽象类可以提供某些方法的部分实现,接口不可以。
  • 抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。
  • 在抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写。
  • 接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。
  • 接口不能包含字段、构造函数、析构函数、静态成员或常量。

接口的实现方式

显示实现

常用于实现多个接口或接口名相同,使用显示时,隐式失效
只能通过接口对象来调用
public void IClimbTree.ClimbTree()
{
    Console.WriteLine("我会爬树");
}
 
public void ICatchMice.CatchMice()
{
    Console.WriteLine("我会抓老鼠");
}

隐式实现

用于单个实现接口
可以同接口对象调用,也可以通过派生类的实例来调用
public void ClimbTree()
{
    Console.WriteLine("我会爬树");
}
public void CatchMice()
{
    Console.WriteLine("我会抓老鼠");
}

参考

  • LixiSchool-C# 接口《通俗解释》
  • 搬运工_阿壮-C#中对于接口的实现方式
分享到:
CRC编码
VSCode配置C#环境
  • 文章目录
  • 站点概览
欢

网红 欢

你能抓到我么?

Email RSS
看爆 Top5
  • mac系统版本与Xcode版本有冲突 4,082次看爆
  • JAVA_HOME环境配置问题 3,732次看爆
  • AssetBundle使用 3,500次看爆
  • VSCode配置C++开发环境 3,258次看爆
  • Lua反射 3,134次看爆

Copyright © 2025 欢 粤ICP备2020105803号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图