【问题标题】:Why is including a class member variable in a java class not like a ruby mixin?为什么在 java 类中包含类成员变量不像 ruby​​ mixin?
【发布时间】:2014-06-19 20:32:33
【问题描述】:

我正在阅读有关 ruby​​ 中的 mixins 的内容,并且正在反思我对 java 的一些知识。 mixin 不只是另一个响应该类型方法的成员变量吗?我知道在像 ruby​​ 这样的语言中,它只是一组可以“混入”类的方法。但这与包含类成员变量的 java 类有什么不同呢?

提前谢谢你。

【问题讨论】:

  • 我很好奇你对 Ruby mixin 等价物是什么意思 - a java class containing a class member variable

标签: java ruby mixins


【解决方案1】:

我想说 Ruby mixins 比 Java 类变量更类似于 Java interfaces

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

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

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

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

【讨论】:

  • 我并不是说 java 类的成员变量是静态的。可以说它们不是静态的,而是定义为私有成员实例变量。它们不就等同于 mixins 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
相关资源
最近更新 更多