Зачем же все таки нужен return?
Оператор return, как и следует из его названия, возвращает из метода результат или управление.

P.S. Поразительно, что вы задаёте вопросы по Java с 2018-го года и до сих пор не освоили самые основы.
Если брать конкретно этот код, он не требует return, ведь он нарушает принцип единой ответственности. Метод daytime в вашем случае отвечает сразу за 2 действия - определение что выводим и его вывод. Правильно было бы иметь такой код:
static String daytime(int hour){
        if (hour >24 || hour < 0)
            throw new IllegalArgumentException("Bad argument");
        if(hour > 21 || hour < 6)
            return "Good night";
        else if(hour >= 15)
            return "Good evening";
        else if(hour >= 11)
            return "Good after noon";
        else
            return "Good morning";
    }

А вывод должен осуществляться в методе main

ps в жизни не писал на джаве, если там косяки в синстаксисе, поправьте