Доброго времени суток!
Стало интересно, как у нас получается создать объект типа Hen, если мы делаем класс Hen абстрактным, а создавать экземпляры абстрактных классов нельзя.
public class Solution {
public static void main(String[] args) {
Hen hen = HenFactory.getHen(Country.RUSSIA);
System.out.println(hen.getCountOfEggsPerMonth());
}
static class HenFactory {
static Hen getHen(String country) {
Hen hen = null;
if (country.equals("Belarus"))
return new BelarusianHen();
else if (country.equals("Ukraine"))
return new UkrainianHen();
else if (country.equals("Russia"))
return new RussianHen();
else if (country.equals("Moldova"))
return new MoldovanHen();
return hen;
}
}
}