Size: a a a

Kotlin Community

2020 November 18

T

The The in Kotlin Community
саша сок #KotlinGang
можно плагин all-open использовать и тогда по умолчанию всё будет открыто
да не. просто как бы возможность наследоваться от любого класса это вроде как хорошо. впервые слышу. что это плохо.
источник

VP

Vladimir Petrakovich in Kotlin Community
саша сок #KotlinGang
можно плагин all-open использовать и тогда по умолчанию всё будет открыто
Ну не всё, а только с аннотациями
источник

AN

Alexander Nozik in Kotlin Community
The The
>По умолчанию все классы в Kotlin имеют статус final, который блокирует возможность наследования.
а почему так? какие аргументы в пользу такого?
Не нашел короткий ответ на первой странице гугла. TL;DR: должно быть сознательное решение о том, что мы хотим этот класс наследовать, а не о том, что не хотим. Потому что излишнее наследование - вред. Надо, чтобы люди делали композицию
источник

VP

Vladimir Petrakovich in Kotlin Community
The The
да не. просто как бы возможность наследоваться от любого класса это вроде как хорошо. впервые слышу. что это плохо.
Это хорошо, но не для всех и не всегда. В общем, довольно опасный инструмент.
источник

AN

Alexander Nozik in Kotlin Community
The The
да не. просто как бы возможность наследоваться от любого класса это вроде как хорошо. впервые слышу. что это плохо.
Вот недавно уже было: https://en.wikipedia.org/wiki/Composition_over_inheritance
источник

T

The The in Kotlin Community
Vladimir Petrakovich
Это хорошо, но не для всех и не всегда. В общем, довольно опасный инструмент.
поэтому можно класс сделать final, когда наследоваться от этого класса не хорошо
источник

T

The The in Kotlin Community
а по умолчанию все классы неявно делать final... ну хз
источник

VP

Vladimir Petrakovich in Kotlin Community
The The
поэтому можно класс сделать final, когда наследоваться от этого класса не хорошо
Фишка в том, что это всегда плохая идея, если об этом не подумал его автор
источник

с#

саша сок #KotlinGang... in Kotlin Community
The The
поэтому можно класс сделать final, когда наследоваться от этого класса не хорошо
> должно быть сознательное решение о том, что мы хотим этот класс наследовать, а не о том, что не хотим

https://t.me/kotlin_lang/215734
источник

AN

Alexander Nozik in Kotlin Community
The The
а по умолчанию все классы неявно делать final... ну хз
Умные дяди и тети на основе большого опыта так решили. И правильно решили.
источник

T

The The in Kotlin Community
Alexander Nozik
Умные дяди и тети на основе большого опыта так решили. И правильно решили.
осталось рассказать умным дядям и тетям из c++, что такое хорошо, а что такое плохо 🤪
источник

с#

саша сок #KotlinGang... in Kotlin Community
The The
а по умолчанию все классы неявно делать final... ну хз
ну вы попробуйте, если будет какой-то юзкейс и вам не понравится - напишите.
источник

VP

Vladimir Petrakovich in Kotlin Community
С этим согласны не все, и ворвавшись с таким вопросом в @jvmchat, можно устроить холивар.
источник

T

The The in Kotlin Community
саша сок #KotlinGang
ну вы попробуйте, если будет какой-то юзкейс и вам не понравится - напишите.
ну вот например в андроиде часто бывает необходимость наследоваться от класса в какой-то либе
источник

с#

саша сок #KotlinGang... in Kotlin Community
The The
ну вот например в андроиде часто бывает необходимость наследоваться от класса в какой-то либе
если это джава либа, то пожалуйста
источник

VP

Vladimir Petrakovich in Kotlin Community
The The
осталось рассказать умным дядям и тетям из c++, что такое хорошо, а что такое плохо 🤪
Вы же понимаете, что такие вещи не изменить в существующем языке?
источник

с#

саша сок #KotlinGang... in Kotlin Community
саша сок #KotlinGang
если это джава либа, то пожалуйста
если это котлин либа, то создатель сделает нужные классы открытыми
источник

T

The The in Kotlin Community
саша сок #KotlinGang
если это котлин либа, то создатель сделает нужные классы открытыми
это все приведет к тому, что придется этот класс просто выковыривать из либы и определять у себя в андроид проекте. надеяться на то что что-то там сделает автор либы это такое, по моему опыту. не говоря уже о том что либы могут уже не обновляться
источник

с#

саша сок #KotlinGang... in Kotlin Community
The The
это все приведет к тому, что придется этот класс просто выковыривать из либы и определять у себя в андроид проекте. надеяться на то что что-то там сделает автор либы это такое, по моему опыту. не говоря уже о том что либы могут уже не обновляться
вы просто не писали на котлине. это дело привычки, что класс нужно сделать открытым, ещё никто на такие проблемы, как вы описываете выше, не натыкался.
как минимум для тестов / примеров создателю либы надо будет сделать класс открытым.
источник

AN

Alexander Nozik in Kotlin Community
The The
осталось рассказать умным дядям и тетям из c++, что такое хорошо, а что такое плохо 🤪
В С++ ровно то же самое. Безумное и бездумное наследование - это признак плохого проектирования. И возможно именно свобода в языке виновата в том, что в С++ этого плохого проектирования много.
источник