У меня есть два подкласса абстрактного класса, каждый из которых реализует абстрактный метод своего суперкласса. Я хочу иметь другой тип возврата для каждого, хотя эти типы возвращаемого типа в свою очередь являются подклассами другого абстрактного класса. Смотрите ниже:Не удается вернуть подклассы абстрактного класса в реализации абстрактного метода
public abstract class Gardener {
public abstract ArrayList<Flower> getFlowers();
}
public class GardererA extends Gardener {
public ArrayList<Flower> getFlowers() {
return new ArrayList<Daisy>();
}
}
public class GardererB extends Gardener {
public ArrayList<Flower> getFlowers() {
return new ArrayList<Rose>();
}
}
public abstract class Flower {}
public class Daisy extends Flower {}
public class Rose extends Flower {}
Очевидно Java не позволит мне сделать это, но я в растерянности, как получить эту функциональность. Есть идеи?
Почему вы положили '()' в именах классов? Они не являются конструкторскими методами. – aastefanov
Я вижу много классов и не много интерфейсов. Я бы хотел увидеть код клиента, который должен знать разные садовники A и B. Я думаю, что дженерики могут вам помочь, но нам нужно будет узнать более подробную информацию. – emeraldjava
@aastefanov благодарит за это. Я отредактировал мой вопрос, чтобы исправить это. –