Как обрабатывать композицию / агрегацию и полиморфизм в Java

У меня есть два абстрактных класса, назовем их Car и Wheel . Я управляю разными типами автомобилей, используя некоторую наследственность. Допустим, есть два производных MonsterTruckCar и ToyCar . Кроме того, существуют разные типы колес, которые соответствуют автомобилям Car , например, TreadedWheel и PlasticWheel (отображение не обязательно должно быть одним единообразно от типов автомобилей к типам колес). Далее Автомобиль состоит из Колеса .

Я думал, что смогу сделать это на Java, используя атрибут Car как тип ArrayList . Проблема, с которой я столкнулся, заключается в том, что теперь, когда я хочу использовать полиморфизм в Wheel , я не могу, потому что всякий раз, когда я имею дело с Wheel, он осуществляется через ArrayList , который не является производным класс Колеса .

Я думал, что смогу использовать ограниченные символы подстановки или просто множество операторов switch для обработки различных комбинаций, но я не думаю, что какое-либо из этих решений будет лучшим решением. Как мне справиться с такой структурой?

Далее, как добавить Wheel в композицию / коллекцию в Car . То есть мне нужно иметь возможность добавлять переменное количество бетона Wheel в Автомобиль , в дальнейшем это будет основываться на некотором вводе пользователя.поэтому я хотел бы иметь цикл while в конструкторе по умолчанию, который запрашивает пользователя, хочет ли он / она добавить еще одно колесо, а затем, если он / она это делает, я добавляю еще одно колесо ко всему, что их агрегирует / собирает в Автомобиль .

Редактировать: Отредактированы имена самих классов с множественного числа ( Колеса ) на единственное с ( Колесо ), чтобы прояснить отношения. Добавлен последний абзац, который объясняет поведение, которое я ищу.

5
задан Jordan 26 October 2011 в 11:04
поделиться