Не следует создавать зависимость в этом направлении, суперкласс не может знать, что реализовано в подклассах.
Одним из решений является создание абстрактного метода в суперклассе
//Car class
public abstract void doModelSpecificStuff();
и затем позвоните откуда-нибудь из вашего класса автомобилей. Затем каждый подкласс реализует этот метод и выполняет действия, специфичные для этой модели автомобиля.
//Mercedes class
@Override
public void doModelSpecificStuff() {
doMercedesStuff();
}
Код хранилища будет тогда
class WarehouseX extends Warehouse{
public static void main(){
Warehouse warehouse = new WarehouseX();
warehouse.car.doModelSpecificStuff();
}
}
Для отслеживания ответа от Legacy, еслиВы делаете универсальный склад, который затем можете сделать
class WarehouseX extends Warehouse<Mercedes>{
//...
public void someMethod() {
car.doModelSpecificStuff();
}
}