是不是因为动态类型我们在 python 中不需要接口(interface)的概念(如 Java 和 C#)?
最佳答案
interface
作为关键字和工件是由 Java1 引入的(C# 从那里得到它)来描述对象必须遵守的契约是什么。
但是,接口(interface)一直是面向对象范式的关键部分,它基本上代表了对象必须响应的方法。 Java 只是强制执行这种机制来提供静态类型检查。
因此,动态 (OO) 编程语言确实使用接口(interface),即使它们不会静态检查它们。就像其他数据类型一样,例如在 Ruby 中:
@i = 1;
您不必声明类型为 FixNum
的 i
,您只需使用它即可。接口(interface)也是如此,它们只是流动。权衡是,您不能对此进行静态检查,并且故障仅在运行时显示。
另一方面Structural type (或者我称之为静态鸭子类型:P)被 Go 或 Scala 等语言使用,提供了两全其美的效果。
<子>
1. 见 Daniel Earwicker 关于 CORBA interface
关键字
关于c# - 为什么我们不需要动态语言的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3062701/