У меня есть два абстрактных класса, назовем их Car
и Wheel
. Я управляю разными типами автомобилей, используя некоторую наследственность. Допустим, есть два производных MonsterTruckCar
и ToyCar
. Кроме того, существуют разные типы колес, которые соответствуют автомобилям Car
, например, TreadedWheel
и PlasticWheel
(отображение не обязательно должно быть одним единообразно от типов автомобилей к типам колес). Далее Автомобиль
состоит из Колеса
.
Я думал, что смогу сделать это на Java, используя атрибут Car
как тип ArrayList
. Проблема, с которой я столкнулся, заключается в том, что теперь, когда я хочу использовать полиморфизм в Wheel
, я не могу, потому что всякий раз, когда я имею дело с Wheel, он осуществляется через ArrayList
, который не является производным класс Колеса
.
Я думал, что смогу использовать ограниченные символы подстановки или просто множество операторов switch для обработки различных комбинаций, но я не думаю, что какое-либо из этих решений будет лучшим решением. Как мне справиться с такой структурой?
Далее, как добавить Wheel
в композицию / коллекцию в Car
. То есть мне нужно иметь возможность добавлять переменное количество бетона Wheel
в Автомобиль
, в дальнейшем это будет основываться на некотором вводе пользователя.поэтому я хотел бы иметь цикл while в конструкторе по умолчанию, который запрашивает пользователя, хочет ли он / она добавить еще одно колесо, а затем, если он / она это делает, я добавляю еще одно колесо
ко всему, что их агрегирует / собирает в Автомобиль
.
Редактировать: Отредактированы имена самих классов с множественного числа ( Колеса
) на единственное с ( Колесо
), чтобы прояснить отношения. Добавлен последний абзац, который объясняет поведение, которое я ищу.