c# - 为什么我们不需要动态语言的接口(interface)?

标签 c# java python dynamic-languages

是不是因为动态类型我们在 python 中不需要接口(interface)的概念(如 Java 和 C#)?

最佳答案

interface 作为关键字和工件是由 Java1 引入的(C# 从那里得到它)来描述对象必须遵守的契约是什么。

但是,接口(interface)一直是面向对象范式的关键部分,它基本上代表了对象必须响应的方法。 Java 只是强制执行这种机制来提供静态类型检查。

因此,动态 (OO) 编程语言确实使用接口(interface),即使它们不会静态检查它们。就像其他数据类型一样,例如在 Ruby 中:

 @i = 1;

您不必声明类型为 FixNumi,您只需使用它即可。接口(interface)也是如此,它们只是流动。权衡是,您不能对此进行静态检查,并且故障仅在运行时显示。

另一方面Structural type (或者我称之为静态鸭子类型:P)被 Go 或 Scala 等语言使用,提供了两全其美的效果。

<子> 1. 见 Daniel Earwicker 关于 CORBA interface 关键字

的评论

关于c# - 为什么我们不需要动态语言的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3062701/

相关文章:

c# - UWP 新应用程序 View

python - 在 Python 中交互运行外部可执行文件

c# - 为什么鼠标右键单击时拖放不起作用?

c# - Azure AD Graph API - 使用 C# 将用户分配给应用程序

java - 在jsp中打印 session 属性

java - UnmarshalException 错误

java - 循环将值输入到 Java Hashmap 中

python - 如何将 pendulum 转换为 datetime.datetime 类型?

python - 在 Django 中处理动态生成表单的更好方法

C# 在任何地方检测 ESC 按键