Я пытаюсь понять, как лучше всего решить эту проблему в проекте, над которым я работаю. Приведу аналогию задачи:
Есть класс Автомобиль. Из Car я создаю 3 расширяющих его класса:
- Лимузин удлиняет автомобиль
- Грузовик удлиняет Автомобиль
- Автобус удлиняет автомобиль
Теперь предположим, что я понимаю, что кто-то забыл включить метод getSpeed() в класс Car, и мне нужно его добавить. Но я не могу каким-либо образом изменить класс Car, а 3 класса должны расширять Car. Как мне лучше всего добавить общую функциональность к этим 3 классам без необходимости копировать и вставлять код туда и обратно? Реализация метода getSpeed() одинакова для каждого класса, поэтому я хотел бы что-то вроде абстрактного класса, но при этом иметь возможность сохранять классы как расширение Car.
Это пример моего единственного способа обойти это до сих пор, но мне любопытно, есть ли лучший способ:
public class Limo extends Car {
CarSpeed cs;
public Limo() {
cs = new CarSpeed(this);
}
}
и иметь класс CarSpeed, содержащий фактический метод getSpeed().
Есть ли более чистый способ сделать это, о котором я не знаю? Я также могу работать только на Java 7, поэтому я не думаю, что могу использовать ключевое слово по умолчанию (не то, чтобы я прочитал его достаточно, чтобы знать, применимо ли оно к этой ситуации: ()