java - 为什么在 java 类中包含类成员变量不像 ruby​​ mixin 那样?

标签 java ruby mixins

我正在阅读有关 ruby​​ 中的 mixins 的内容,并反射(reflection)我所拥有的有关 java 的一些知识。 mixin 不就是响应该类型方法的另一个成员变量吗?我知道在像 ruby​​ 这样的语言中,它只是一组可以“混合”到类中的方法。但这与包含类成员变量的 java 类有何不同?

提前谢谢您。

最佳答案

我想说,Ruby mixins 比 Java 类变量更类似于 Java 接口(interface)

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

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

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

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

关于java - 为什么在 java 类中包含类成员变量不像 ruby​​ mixin 那样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23440303/

相关文章:

ruby - bundle exec rspec spec/=> RUBYOPT : -F (RuntimeError) 中的无效开关

ruby - 在 docker 中运行 ruby​​ 1.8.7

css - 如何使用某些 mixin( polymer 2)设计纸张输入的样式?

ruby - 我如何混入 Singleton 来创建一个接受初始化参数的类?

ruby-on-rails - Ruby on Rails ActiveRecord 数据流

css - 我如何使用 Bootstrap 3 混入?

java - JPA 属性访问给出 NullPointerException

java - 如何强制使用 @Override 注解?

java - 从Java中的两个线程访问共享变量

java - 使用 java.security.SecureRandom 生成仅包含字母和数字的字符串