最近我在采访中被问到,接口(interface)可以被视为C#中的类吗? IE。接口(interface)是 C# 中的类吗?
我很困惑。
答案是什么?
最佳答案
不,接口(interface)不是类。
接口(interface)是一组方法签名和可能的属性,它们都与一个想法相关。例如,IList 接口(interface)将具有索引、插入和获取元素数量的方法。但是,它没有定义任何实现细节。列表接口(interface)可以实现为链表、封装数组或任何您想要的形式,只要它在接口(interface)中定义了这些方法即可。
类是创建实际对象的模板。类是方法签名的集合,加上这些方法的实现。
所以不,接口(interface)不是类,因为它仅仅定义了一个特定的契约,而类定义了对象的整个行为。
评论者 SquareCog 准确地指出上述内容并不完全正确。由于类可以被子类化,方法可以被覆盖,类与对象实际行为的关系变得更加复杂。我只是想通过说类是独立的实体来解决这个问题。您可以阅读类的源代码并了解该类包含的行为。但是,在运行时,对象具有类型而不是类。类型是整个继承树,而不是单个类,因此可以在几个不同的类上定义一个类型的行为。幸运的是,这并没有改 rebase 本的概念差异,即接口(interface)是可以暗示(通过名称、参数类型等)某些实现的契约,但除了方法签名之外不能强制执行任何东西,而类确实定义了一个实现,即使那不是在运行时使用的实际实现。
关于c# - 类与接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338421/