为什么在java类中包含一个类成员变量而不是像ruby mixin?

时间:2014-05-03 04:35:02

标签: java ruby mixins

我正在阅读ruby中的mixins,并且正在思考我对java的一些知识。 mixin不是另一个响应该类型方法的成员变量吗?据我所知,在像ruby这样的语言中,它只是一组可以“混合”到类中的方法。但是,这与包含类成员变量的java类有何不同?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

我说Ruby mixins与Java interfaces更相似,而不是Java类变量。

与Java类似,Ruby没有多重继承。在这两种语言中,一个类只能有一个父类(尽管该父类可以拥有它自己的父类,依此类推)。

类似于Java使用interfaces来声明所有实现类应该定义的函数,Ruby使用mixins来增强给定类层次结构的功能。

Java实例变量在类中定义,而Ruby mixins就像在当前类和父类之间添加新的父类。对于类的对象,是的mixins可能看起来类似于Java实例变量(就像对象不知道它从实例化类接收的成员与从父类继承的成员之间的区别一样)。

可能重要的区别是Ruby mixins被添加到继承层次结构中,而添加Java实例成员则需要修改实际的类。