问题描述
我一直在阅读有关Python-Mixin
并且知道它为类添加了一些功能(方法)。
同样, Java-Interfaces
也提供了用于分类的方法。
我可以看到的唯一区别是Java-interfaces
是抽象方法, Python-Mixin
带有实现。
还有其他区别吗?
1楼
好吧,“抽象方法”部分非常重要。
Java是强类型的。 通过在类型定义中指定接口,可以使用它们来构造新类型的签名。 在类型定义之后,您已承诺此新类型(或某些子类)最终将实现在您指定的各种接口中定义的所有功能。
因此,接口实际上不会向类添加任何方法,因为它不提供方法实现。 它只是增加了类的签名/承诺。
但是,Python不是强类型的。 类型的“签名”并不重要,因为它仅在运行时检查您要调用的方法是否确实存在。
因此,在Python中,mixin确实是关于向类添加方法和功能的。 它根本与类型签名无关。
综上所述:
- Java接口->功能未添加,签名已扩展。
- Python mixins->功能已添加,签名无关紧要。