В Java и Kotlin существуют различные модификаторы доступа, которые определяют видимость классов и их членов. Понимание этих модификаторов критически важно для правильного проектирования Android-приложений.
public class PublicClass { // Виден везде
public int publicField;
}
Характеристики:
class PackagePrivateClass { // Виден только в своем пакете
int packagePrivateField;
}
Характеристики:
public class BaseClass {
protected int protectedField; // Виден наследникам
}
Важно: Для классов в Java модификатор protected не применяется (только для членов класса)
public class OuterClass {
private class InnerClass { // Виден только внутри OuterClass
private int privateField;
}
}
Характеристики:
Kotlin изменяет некоторые правила Java:
internal class InternalClass { // Виден в пределах модуля
internal val internalField: Int = 0
}
Модификатор | Java | Kotlin | Android Use Case |
---|---|---|---|
public | Виден везде | Виден везде | Activity, Fragment, Public API |
package-private | Виден в пакете (default) | Нет (используется internal) | Внутренние хелперы |
protected | Только для членов класса | Виден в классе+наследниках | Базовые классы компонентов |
private | Виден в классе | Виден в классе/файле | Внутренняя реализация |
internal | Нет | Виден в модуле | Модульная архитектура |
Минимизируйте public доступ:
Использование internal:
internal class DatabaseHelper // Виден только внутри модуля data
Вложенные классы:
Пример из Android SDK:
public abstract class View {
protected void onMeasure() {...} // Для переопределения наследниками
private void dispatchDraw() {...} // Внутренняя реализация
}
Выбор модификатора доступа зависит от требуемого уровня инкапсуляции. Public - для публичного API, private/internal - для скрытия реализации, protected - для наследников. Правильное использование модификаторов делает код более безопасным и поддерживаемым.