Java接口和Python Mixin之间的区别?

时间:2017-02-09 17:34:00

标签: java python interface mixins

我一直在阅读有关Python-Mixin的内容,并了解它为课程添加了一些功能(方法)。同样,Java-Interfaces也提供了类的方法。

唯一不同的是,我可以看到Java-interfaces是抽象方法而Python-Mixin是实现的。

还有其他差异吗?

1 个答案:

答案 0 :(得分:3)

嗯,抽象方法'部分非常重要。

Java是强类型的。通过在类型定义中指定接口,可以使用它们来构造新类型的签名。在类型定义之后,您承诺这个新类型(或某个子类)最终将实现在您指定的各种接口中定义的所有函数。

因此,接口实际上并没有向类添加任何方法,因为它没有提供方法实现。它只是增加了班级的签名/承诺。

但是,Python并不是强类型的。 '签名'这类型并不重要,因为它只是在运行时检查您想要调用的方法是否实际存在。

因此,在Python中,mixin确实是在为类添加方法和功能。它根本不关心类型签名。

总结:

  • Java接口 - >不添加函数,签名IS扩展。
  • Python mixins - >添加功能,签名无关紧要。