Модификаторы доступа в Java управляют видимостью полей и методов. Самые частые — public (доступно отовсюду) и private (доступно только внутри класса). Это основа капсуляции: скрываем внутренние детали и даём безопасный интерфейс через методы (часто геттеры/сеттеры). В задачах java онлайн это помогает делать код устойчивым и понятным: меньше случайных изменений, проще тесты и поддержка. В уроках и тренажере будет тренировка на чтение кода и выбор правильной области доступа.
Пример:
class User {
private String name;
public String getName() { return name; }
}
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
1. Сопоставь модификатор и видимость
Сопоставьте модификаторы доступа в Java с описаниями их областей видимости. Каждому модификатору из левой колонки соответствует ровно одно описание из правой. Обратите внимание, что в правой колонке описания представлены в случайном порядке, и все они уникальны.
2. Собери класс с приватным полем и публичным методом
В этом задании вам предстоит собрать корректный класс Person, демонстрирующий принцип инкапсуляции. В коде класса есть три пропуска: модификатор доступа для поля, модификатор доступа для метода и обращение к полю внутри метода. Используя выпадающие списки, выберите подходящие варианты, чтобы класс соответствовал принципам капсуляции — скрывал внутреннее состояние объекта и предоставлял контролируемый доступ через публичный метод. Обратите внимание на различия между модификаторами private, public и protected, а также на способы доступа к полю внутри самого класса.
class Person {
input1S String name;
input2S void printName() {
System.out.println(input3S);
}
}3. Исправь нарушение private-доступа
В данном фрагменте кода Java представлены два класса: Person и Main. Класс Person имеет приватное поле name, доступ к которому должен осуществляться только через публичные методы. Однако в классе Main происходит попытка прямого доступа к приватному полю name объекта Person. Найдите строку с нарушением принципа инкапсуляции и исправьте её, используя корректный способ доступа к полю name. Помните, что поле name должно оставаться скрытым (private).
class Person { private String name; public Person(String name) { this.name = name; } public String getName() { return name; }} public class Main { public static void main(String[] args) { Person person = new Person("Alice"); System.out.println(person.name); }}4. Заполни пропуски в правилах доступа
В этом задании вам предстоит заполнить пропуски в таблице, описывающей правила видимости модификаторов доступа в Java. Таблица содержит четыре строки, соответствующие разным уровням доступа: public, protected, модификатор по умолчанию (package-private) и private. Вам необходимо вписать в пропуски правильные ключевые слова (public, private) или оставить поле пустым для случая 'без модификатора', чтобы таблица точно отражала область видимости каждого модификатора. Обратите внимание на видимость внутри класса, внутри пакета, через наследование в другом пакете и глобальную видимость.
| Модификатор доступа | Видимость внутри класса | Видимость внутри пакета | Видимость через наследование (в другом пакете) | Видимость везде |
|---|---|---|---|---|
| input1S | Да | Да | Да | Да |
| input2S | Да | Да | Да | Нет |
| без модификатора | Да | Да | Нет | Нет |
| input3S | Да | Нет | Нет | Нет |
5. Скомпилируется ли код с private методом?
Проанализируйте приведенный код на Java, содержащий два класса. Определите, скомпилируется ли данный код успешно, или возникнет ошибка компиляции. Обратите особое внимание на модификаторы доступа методов.
class Printer {
private void printMessage() {
System.out.println("Сообщение из Printer");
}
}
class MainApp {
public static void main(String[] args) {
Printer printer = new Printer();
printer.printMessage();
}
}6. Разметь модификаторы доступа
В данном фрагменте кода Java выделены несколько элементов. Для каждого выделенного сегмента определите его тип: «модификатор доступа», «тип данных», «имя метода или поля» или «другое» (например, ключевое слово class). Обратите внимание на ключевые слова public, private, protected и их отсутствие.
{{public~|~t1}} class Student {
{{private~|~t2}} {{int~|~t3}} {{age~|~t4}};
{{protected~|~t5}} {{String~|~t6}} {{name~|~t7}};
{{public~|~t8}} {{void~|~t9}} {{setAge~|~t10}}(int newAge) {
age = newAge;
}
}