【问题标题】:Difference between Java Interfaces and Python Mixin?Java接口和Python Mixin之间的区别?
【发布时间】:2017-06-27 20:23:59
【问题描述】:

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

唯一的区别是Java-interfaces 是抽象方法,Python-Mixin 是实现。

还有什么不同吗?

【问题讨论】:

  • 对于初学者:mixins 带有实现。一个接口只描述一个接口。
  • @WillemVanOnsem 是的。但总体目的与为某个类添加特定功能相同。对吗?
  • 不是基于我在 mixins 上阅读的内容。例如,mixin 很流行修补代码,而接口显然不能修补代码。
  • 当然,使用并不严格,因此值得商榷。但在我看来,mixins 可以添加功能,而接口定义功能。

标签: java python interface mixins


【解决方案1】:

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

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

因此,接口并没有真正向类添加任何方法,因为它不提供方法实现。它只是添加到类的签名/承诺中。

然而,Python 不是强类型的。类型的“签名”并不重要,因为它只是在运行时检查您希望调用的方法是否实际存在。

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

总结:

  • Java 接口 -> 未添加函数,扩展了签名。
  • Python mixins -> 已添加函数,签名无关紧要。

【讨论】:

    猜你喜欢
    • 2016-12-05
    • 2014-06-01
    • 2021-08-28
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2020-10-18
    相关资源
    最近更新 更多