Куриная фабрика Написать Фабрику(Factory) по производству кур(Hen): 1. Создать класс Hen. 1.1. Сделать его абстрактным. 1.2. Добавить в класс абстрактный метод int getCountOfEggsPerMonth(). 1.3. Добавить в класс метод String getDescription(), который возвращает строку «Я — курица.«. 2. Создать класс RussianHen, который наследуется от Hen. 3. Создать класс UkrainianHen, который наследуется от Hen. 4. Создать класс MoldovanHen, который наследуется от Hen. 5. Создать класс BelarusianHen, который наследуется от Hen. 6. В каждом из четырех последних классов написать свою реализацию метода getCountOfEggsPerMonth. Методы должны возвращать количество яиц в месяц от данного типа куриц. 7. В каждом из четырех последних классов написать свою реализацию метода getDescription. Методы должны возвращать строку вида: <getDescription() родительского класса> + <» Моя страна — Sssss. Я несу N яиц в месяц.»> где Sssss — название страны где N — количество яиц в месяц 8. В классе HenFactory реализовать метод getHen, который возвращает соответствующую стране породу кур. 9. Все созданные вами классы должны быть в отдельных файлах. Требования: 1. Класс Hen должен быть абстрактным. 2. Класс Hen должен содержать абстрактный метод int getCountOfEggsPerMonth(). 3. В классе Hen должен быть реализован метод String getDescription(), который возвращает строку "Я - курица.". 4. Классы RussianHen, UkrainianHen, MoldovanHen и BelarusianHen должны наследоваться от класса Hen и быть созданы в отдельных файлах. 5. Классы RussianHen, UkrainianHen, MoldovanHen и BelarusianHen должны реализовывать метод getCountOfEggsPerMonth, который должен возвращать количество яиц в месяц от данного типа куриц. 6. Классы RussianHen, UkrainianHen, MoldovanHen и BelarusianHen должны переопределять метод getDescription родительского класса, таким образом, чтобы возвращаемая ими строка имела вид: + < Моя страна - Sssss. Я несу N яиц в месяц.> где Sssss - название страны, а N - количество яиц в месяц. 7. Метод getHen должен быть реализован в классе HenFactory и должен возвращать тип кур для переданной в него страны.
package com.javarush.task.task14.task1408;

public class Solution {
    public static void main(String[] args) {
        Hen hen = HenFactory.getHen(Country.BELARUS);
        hen.getCountOfEggsPerMonth();
    }

    static class HenFactory {

        static Hen getHen(String country) {
            Hen hen = null;
            //напишите тут ваш код
            if (country.equals(Country.BELARUS))
                return new BelarusianHen();
            else if (country.equals(Country.MOLDOVA))
                return new MoldovanHen();
            else if (country.equals(Country.RUSSIA))
                return new RussianHen();
            else if (country.equals(Country.UKRAINE))
                return new UkrainianHen();
            else
                return hen;
        }
    }

    public static abstract class Hen {

        abstract int getCountOfEggsPerMonth();
        String getDescription() {
            return "Я — курица.";
        }
    }
}
Далее отдельные файлы
package com.javarush.task.task14.task1408;

public class BelarusianHen extends Solution.Hen {

    int getCountOfEggsPerMonth() {
        return 9842;
    }
    @Override
    String getDescription() {
        return super.getDescription() +" Моя страна — " + Country.BELARUS + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
    }
}
package com.javarush.task.task14.task1408;

public class MoldovanHen extends Solution.Hen {
    int getCountOfEggsPerMonth() {
        return 2;
    }
    @Override
    String getDescription() {
        return super.getDescription() +" Моя страна — " + Country.MOLDOVA + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
    }
}
package com.javarush.task.task14.task1408;

public class UkrainianHen extends Solution.Hen {
    int getCountOfEggsPerMonth() {
        return 0;
    }

    @Override
    String getDescription() {
        return super.getDescription() +" Моя страна — " + Country.UKRAINE + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
    }
}
package com.javarush.task.task14.task1408;

public class RussianHen extends Solution.Hen {
    int getCountOfEggsPerMonth() {
        return 5;
    }
    @Override
    String getDescription() {
        return super.getDescription() +" Моя страна — " + Country.RUSSIA + ". Я несу " + getCountOfEggsPerMonth() + " яиц в месяц.";
    }
}