При переопределении метода в Kotlin базовый класс, определяющий метод и сам метод, должен быть объявлен open
.
После переопределения метода производный класс равен final
по умолчанию, в то время как переопределенный метод open
по умолчанию.Из справочной документации:
Элемент, помеченный как override, сам по себе открыт, т.е. он может быть переопределен в подклассах.Если вы хотите запретить переопределение, используйте final.
Интересно, почему Kotlin-Team приняла это дизайнерское решение вместо того, чтобы сделать окончательно переопределенный метод, которыйзначение по умолчанию для производного класса и каждого не переопределенного метода.Мне не удалось найти подсказки при поиске в Интернете?
У кого-нибудь есть ссылка на обоснование этого дизайнерского решения или он может мотивировать его?