为什么我们不需要动态语言的界面?
2022-09-02 20:31:46
仅仅是因为动态类型,我们不需要python中的接口概念(如Java和C#)吗?
仅仅是因为动态类型,我们不需要python中的接口概念(如Java和C#)吗?
Java1 引入了作为关键字和工件(C# 从那里开始),以描述对象必须遵守的契约是什么。interface
但是,接口一直是面向对象范式的关键部分,基本上它代表了对象必须响应的方法。Java只是强制执行此机制以提供静态类型检查。
因此,动态(OO)编程语言确实使用接口,甚至认为它们不会静态检查它们。就像其他数据类型一样,例如在Ruby中:
@i = 1;
您不必声明类型,只需使用它即可。接口也是如此,它们只是流动。权衡是,您不能对此进行静态检查,并且故障仅在运行时显示。i
FixNum
另一方面,结构类型(或我称之为:P的静态鸭子类型)被Go或Scala语言使用,给出了两全其美。
1. 参见 Daniel Earwicker 关于 CORBA 界面
关键字的评论