Почему включение переменной класса в класс Java не похоже на миксин ruby?

1

Я читаю о миксинах в рубине и размышляю о некоторых знаниях, которые я имею о Java. Не является ли mixin просто другой переменной-членом, которая отвечает на методы этого типа? Я понимаю, что в таких языках, как ruby, это всего лишь набор методов, которые могут быть "Смешаны" с классом. Но как это отличается от класса java, содержащего переменную члена класса?

Заранее спасибо.

  • 0
    Мне любопытно, что вы имеете в виду из миксинового эквивалента Ruby - a java class containing a class member variable
Теги:
mixins

1 ответ

1
Лучший ответ

Я бы сказал, что Ruby mixins больше похожи на interfaces Java, чем переменные класса Java.

Подобно Java, Ruby не имеет множественного наследования. В обоих языках класс может иметь только один родительский класс (хотя этот родитель, может иметь собственный родительский элемент и т.д.).

Подобно тому, как Java использует interfaces для объявления функций, которые должны определить все классы реализации, Ruby использует mixins для повышения функциональности данной иерархии классов.

Переменные экземпляра Java определены внутри класса, в то время как Ruby mixins похожи на добавление нового родительского класса между вашим текущим классом и его родителем. Для объектов класса yeah mixins может показаться похожим на переменные экземпляра Java (точно так же, как объект не знает разницы между тем, какие члены, которые он получает от своего экземплярирующего класса, и от того, какие члены были унаследованы от родительских классов).

Возможно, важным отличием является то, что Ruby mixins добавляются в иерархию наследования, в то время как добавление членов экземпляра Java требует изменения фактического класса.

  • 0
    Я не хотел, чтобы переменные-члены класса Java были статическими. Допустим, они не являются статичными и определены как переменные экземпляра закрытого члена. Разве они не будут эквивалентны миксинам?
  • 0
    Ах ... редактирование ответа ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню