Задать вопрос
@anasasiakiri4enko

Кто объяснит суть наследования и миксынов в ruby?

Доброй ночи.

Объясните пожалуйста, а то небольшая каша в голове.

1.Миксыны помогают в руби производить множественное наследование, так ли это?

2. По умолчанию в руби нет множественного наследования, так ли это?
- 2.1 К примеру: есть у меня Класс A с миллионом методов, я создаю класс B и наследуюсь от класса А, и, автоматически в классе B этот миллион методов, потом создаю класс C и наследуюсь уже от класса B, и автоматически у меня класс C имеет всё тот же миллион методов (как я понимаю от класса B. Так же?). Чего-то я не пойму, разве это не множественное наследование??

3. К примеру создаю класс A, и подключаю модуль ivan (инклюдом в классе A), в модуле ivan создаю функцию к примеру get_age, а создаю её вот так Ivan.get_age, ( и это типа миксын, я правильно понимаю? или по другому неймспейс) и в классе А мне будет доступен этот миксын следующим образом Ivan::get_age. И если я создаю потом класс B и наследуюсь от A, и, в классе B будет недоступен метод Ivan::get_ivan (так ли это?)

Извините я параноик(
  • Вопрос задан
  • 375 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@anasasiakiri4enko Автор вопроса
Ответ найден.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SerafimArts
@SerafimArts
Senior Notepad Reader
1. Не совсем, миксины не являются полноценными "сущностями", это куски логики, хелперы, если иначе. Модель User, к примеру, является объектом, а миксин аутентификации расширяет возможности этого юзера, при этом не является чем-то конкретным, он просто предоставляет методы `User.login?`. Ну это к примеру =)

2. Множественное наследование, это A наследуется от B и C одновременно: `class A < B and C` (псевдосинтаксис). В этом случае вызов super должен вызывать методы B и C одновременно, а не идти по цепочке наследования от A < B < C. Т.е. множественное наследование не имеет никакой явной иерархии, по-этому его и нету.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы