Допустим, я хочу класс MyClass, который, помимо прочего, имеет свойство, представляющее транспортное средство.
Транспортное средство может быть автомобилем или мотоциклом.
В случае автомобиля я хочу получить его рулевое колесо.
РЕДАКТИРОВАТЬ: мое основное утверждение заключается в том, что мотоцикл не имеет рулевого колеса, поэтому я хотел быизбегайте использования чего-то вроде getSteeringWheel в классе Motorcycle.
Я вижу два решения:
- Абстрактный класс Vehicle, расширенный двумя классами: Car и Motorcycle
Проблема в том, что из объекта MyClass, чтобы получить тип рулевого колеса, я должен сделать что-то вроде этого:
Vehicle vehicle = getVehicle();
if (vehicle instanceof Car) {
SteeringWheel steeringWheel = ((Car) vehicle).getSteeringWheel();
}
, что, я полагаю, не очень хорошо.
Конкретный класс Vehicle, содержащий всётогда метод getSteeringWheel () не имеет особого смысла.
Какой из них лучше?Есть ли другое решение?Спасибо!