Sri*_*thy 17 c# python java dynamic-languages
是不是因为动态类型我们不需要python中的接口概念(比如Java和C#)?
Osc*_*Ryz 23
将interface 作为关键字和神器是在Java引入1(和C#把它从那里)来描述一个对象必须坚持的合同了.
但是,接口一直是面向对象范式的关键部分,基本上它代表了一个对象必须响应的方法.Java只是强制执行此机制来提供静态类型检查.
因此,动态(OO)编程语言确实使用接口,甚至认为它们不会静态检查它们.就像其他数据类型一样,例如在Ruby中:
@i = 1;
Run Code Online (Sandbox Code Playgroud)
您不必声明i类型FixNum,只需使用它即可.接口也是如此,它们只是流动.权衡是,您不能对此进行静态检查,故障仅在运行时显示.
另一方面,结构类型(或称为静态鸭类型,我称之为:P)被Go或Scala等语言使用,可以提供两全其美的效果.
1.请参阅Daniel Earwicker关于CORBA interface关键字的评论