unity3d————接口基础知识点

接口的基本概念

  1. 定义接口
    使用 interface 关键字定义接口。接口中的成员默认是 public,不能有访问修饰符,也不能包含字段、构造函数或实现的方法,只能包含方法、属性、事件和索引器的声明。

  2. 实现接口
    类使用 : 冒号后接接口名来实现接口。如果一个类实现了接口,它必须实现接口中的所有成员。

  3. 接口的用途

    • 定义通用的操作,而不关心具体的实现。
    • 实现多重继承的效果,因为一个类可以实现多个接口。

代码示例

定义接口

|---|--------------------------------|
| | public interface IAnimal |
| | { |
| | void Eat(); |
| | void Sleep(); |
| | } |

实现接口

|---|----------------------------------------------|
| | public class Dog : IAnimal |
| | { |
| | // 实现接口中的方法 |
| | public void Eat() |
| | { |
| | Console.WriteLine("Dog is eating."); |
| | } |
| | |
| | public void Sleep() |
| | { |
| | Console.WriteLine("Dog is sleeping."); |
| | } |
| | } |
| | |
| | public class Cat : IAnimal |
| | { |
| | // 实现接口中的方法 |
| | public void Eat() |
| | { |
| | Console.WriteLine("Cat is eating."); |
| | } |
| | |
| | public void Sleep() |
| | { |
| | Console.WriteLine("Cat is sleeping."); |
| | } |
| | } |

使用接口

|---|---------------------------------------|
| | class Program |
| | { |
| | static void Main(string[] args) |
| | { |
| | IAnimal myDog = new Dog(); |
| | IAnimal myCat = new Cat(); |
| | |
| | myDog.Eat(); |
| | myDog.Sleep(); |
| | |
| | myCat.Eat(); |
| | myCat.Sleep(); |
| | } |
| | } |

接口的高级用法

  1. 接口的继承

    接口可以继承其他接口,从而构建更复杂的接口层次结构。

    |---|----------------------------------------------|
    | | public interface IAdvancedAnimal : IAnimal |
    | | { |
    | | void Run(); |
    | | } |
    | | |
    | | public class Tiger : IAdvancedAnimal |
    | | { |
    | | public void Eat() |
    | | { |
    | | Console.WriteLine("Tiger is eating."); |
    | | } |
    | | |
    | | public void Sleep() |
    | | { |
    | | Console.WriteLine("Tiger is sleeping."); |
    | | } |
    | | |
    | | public void Run() |
    | | { |
    | | Console.WriteLine("Tiger is running."); |
    | | } |
    | | } |

  2. 显式接口实现

    如果一个类实现了多个接口,而这些接口中有同名的方法,可以使用显式接口实现来避免冲突。

    |---|--------------------------------------------------------|
    | | public interface IFirst |
    | | { |
    | | void Show(); |
    | | } |
    | | |
    | | public interface ISecond |
    | | { |
    | | void Show(); |
    | | } |
    | | |
    | | public class MultiInterfaceClass : IFirst, ISecond |
    | | { |
    | | void IFirst.Show() |
    | | { |
    | | Console.WriteLine("IFirst Show"); |
    | | } |
    | | |
    | | void ISecond.Show() |
    | | { |
    | | Console.WriteLine("ISecond Show"); |
    | | } |
    | | } |
    | | |
    | | class Program |
    | | { |
    | | static void Main(string[] args) |
    | | { |
    | | MultiInterfaceClass obj = new MultiInterfaceClass(); |
    | | ((IFirst)obj).Show(); |
    | | ((ISecond)obj).Show(); |
    | | } |
    | | } |

总结

  • 接口是一种定义契约的方式,确保实现类遵循特定的格局。
  • 接口只包含成员的声明,不包含实现。
  • 一个类可以实现多个接口,从而实现多重继承的效果。
  • 接口可以继承其他接口。
  • 显式接口实现用于解决接口方法冲突的问题。

通过理解和使用接口,你可以设计出更加灵活和可扩展的代码结构。希望这些讲解和示例对你理解C#中的接口有所帮助!

相关推荐
mudtools2 小时前
.NET驾驭Word之力:理解Word对象模型核心 (Application, Document, Range)
c#·.net
侃侃_天下7 小时前
最终的信号类
开发语言·c++·算法
echoarts7 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix8 小时前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
大飞pkz8 小时前
【设计模式】C#反射实现抽象工厂模式
设计模式·c#·抽象工厂模式·c#反射·c#反射实现抽象工厂模式
每天回答3个问题8 小时前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说8 小时前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔9 小时前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
我是菜鸟0713号9 小时前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_9 小时前
QT(4)
开发语言·汇编·c++·qt·算法