Я читаю о миксинах в рубине и размышляю о некоторых знаниях, которые я имею о Java. Не является ли mixin просто другой переменной-членом, которая отвечает на методы этого типа? Я понимаю, что в таких языках, как ruby, это всего лишь набор методов, которые могут быть "Смешаны" с классом. Но как это отличается от класса java, содержащего переменную члена класса?
Заранее спасибо.
Я бы сказал, что Ruby mixins
больше похожи на interfaces
Java, чем переменные класса Java.
Подобно Java, Ruby не имеет множественного наследования. В обоих языках класс может иметь только один родительский класс (хотя этот родитель, может иметь собственный родительский элемент и т.д.).
Подобно тому, как Java использует interfaces
для объявления функций, которые должны определить все классы реализации, Ruby использует mixins
для повышения функциональности данной иерархии классов.
Переменные экземпляра Java определены внутри класса, в то время как Ruby mixins похожи на добавление нового родительского класса между вашим текущим классом и его родителем. Для объектов класса yeah mixins может показаться похожим на переменные экземпляра Java (точно так же, как объект не знает разницы между тем, какие члены, которые он получает от своего экземплярирующего класса, и от того, какие члены были унаследованы от родительских классов).
Возможно, важным отличием является то, что Ruby mixins добавляются в иерархию наследования, в то время как добавление членов экземпляра Java требует изменения фактического класса.
a java class containing a class member variable