open и public служат совершенно разным целям — один контролирует наследование, другой контролирует видимость.
openВ Kotlin все классы и функции final по умолчанию, то есть их нельзя наследовать или переопределять. Модификатор open явно разрешает расширение:
open class Animal // можно создать подкласс
open fun speak() { ... } // можно переопределить
Без open попытка наследовать или переопределить вызовет ошибку компиляции.
publicpublic — это модификатор видимости: он определяет, кто может обращаться к объявлению. Это видимость по умолчанию в Kotlin, поэтому оба варианта эквивалентны:
public class Animal { ... }
class Animal { ... } // то же самое, что выше
Другие модификаторы видимости: private, protected и internal.
open для разрешения наследования и переопределенияpublic для управления доступом извнеОни независимы друг от друга и могут комбинироваться:
open class Animal // можно унаследовать, виден всем (по умолчанию)
public open fun speak() { } // доступен везде И может быть переопределён
Ключевое слово open в Kotlin контролирует видимость класса или функции, определяя, можно ли к ним получить доступ извне модуля.
Новый — ещё не проверен сообществом
Вы