Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции 2025. Java. Белая / Ответы на билеты. Java

.pdf
Скачиваний:
0
Добавлен:
02.01.2026
Размер:
4.52 Mб
Скачать

: Чтобы JVM мог вызвать его без создания экземпляра класса, содержащего .

4. Доступ к статическим полям:

Для предоставления контролируемого доступа (например, через геттеры) к полям.

5. Реализация паттерна Синглтон (Singleton) - один из способов:

Статический метод () может использоваться для получения единственного экземпляра класса.

Пример объявления и использования:

методы очень удобны для группировки функциональности, которая не требует состояния объекта, и для предоставления глобально доступных утилит или точек входа.

38. Синтаксис объявления методов, тип возвращаемого значения, формальные параметры и аргументы

Методы в Java — это блоки кода, которые выполняют определенную задачу. Они являются основными строительными блоками поведения классов.

Синтаксис объявления метода:

Разберем компоненты:

1. (необязательно):

, , или отсутствие модификатора (packageprivate). Определяют видимость метода. (См. вопрос 31)

2. (необязательно):

: Метод принадлежит классу, а не экземпляру. (См. вопрос 32)

: Метод не может быть переопределен в подклассах.

: Метод не имеет реализации (тела) и должен быть реализован в неабстрактном подклассе. Может существовать только в абстрактных классах или интерфейсах.

: Используется в многопоточности для контроля доступа к методу.

: Метод реализован на другом языке (например, C/C++).

3. :

Указывает тип данных, который метод возвращает после своего выполнения.

Это может быть любой примитивный тип (, , и т.д.), ссылочный тип (имя класса, интерфейса, массива) или .

: Означает, что метод не возвращает никакого значения. В таких методах оператор (без выражения) может использоваться для досрочного выхода из метода, но он не обязателен в конце метода.

Если тип возвращаемого значения не , метод обязан содержать инструкцию , где должно быть совместимо с

.

4. :

Идентификатор, который вы даете методу.

По соглашению, имена методов начинаются со строчной буквы и используют camelCase (например, , ).

5. (Формальные параметры):

Список параметров, которые метод принимает. Это переменные, которые получают значения при вызове метода.

Каждый параметр состоит из типа и имени.

Если метод не принимает параметров, скобки остаются пустыми: .

Параметры, объявленные в сигнатуре метода, называются формальными параметрами.

В Java параметры передаются по значению. Для примитивных типов передается копия значения, для ссылочных типов — копия ссылки (адреса объекта).

6. (необязательно):

Указывает типы проверяемых (checked) исключений, которые метод может выбросить и не обрабатывает сам. Вызывающий код должен либо обработать эти исключения (в ), либо также объявить их в своем

.

7. :

Блок кода, заключенный в фигурные скобки, который содержит инструкции, выполняемые при вызове метода.

Формальные параметры и аргументы:

Формальные параметры (Parameters): Переменные, объявленные в списке параметров метода в его определении. Они действуют как локальные переменные внутри метода и получают свои значения из аргументов, переданных при вызове.

Аргументы (Arguments / Actual Parameters): Реальные значения или выражения, которые передаются в метод при его вызове. Эти значения присваиваются соответствующим формальным параметрам.

Количество и типы аргументов должны соответствовать количеству и типам формальных параметров (с учетом возможных неявных преобразований типов).

Примеры объявления методов:

Сигнатура метода:

Сигнатура метода в Java состоит из имени метода и типов его формальных параметров (в определенном порядке). Тип возвращаемого значения и модификаторы не являются частью сигнатуры для целей перегрузки методов. Сигнатура уникально идентифицирует метод внутри класса (с учетом перегрузки).

39. Методы с пустым списком параметров

Метод с пустым списком параметров — это метод, который не принимает никаких входных данных (аргументов) при его вызове.

Синтаксис объявления:

В определении метода после его имени ставятся пустые круглые скобки .

Примеры:

1. Метод, не возвращающий значение ():

2. Метод, возвращающий значение:

3. Статический метод с пустым списком параметров:

4.Конструктор без параметров (конструктор по умолчанию, если не определен другой):

Конструктор — это особый тип метода. Конструктор без параметров также имеет пустой список параметров.

Когда используются методы с пустым списком параметров:

Когда метод выполняет действие, не требующее внешних данных для своей работы (например, ).

Когда метод получает необходимые данные из состояния самого объекта (его полей) или из других источников, не передаваемых через параметры (например, использует внутренний объект , использует системное время).

Для геттеров (getter methods), которые возвращают значение поля объекта (хотя их можно рассматривать как методы, неявно использующие ).

Для методов, запускающих какой-либо процесс или изменяющих состояние объекта без внешнего ввода (например, , ).

Вызов методов с пустым списком параметров:

При вызове таких методов также используются пустые круглые скобки:

Если забыть скобки при вызове, компилятор может интерпретировать это как попытку доступа к полю с таким же именем (если оно существует), а не как вызов метода, что приведет к ошибке, если такого поля нет или если контекст не позволяет такой доступ.

40. Стандартные методы класса сеттеры и геттеры, синтаксис и их назначение?

Геттеры (getters) и сеттеры (setters) — это специальные методы, используемые для контроля доступа к полям (переменным экземпляра) класса. Они являются фундаментальной частью принципа инкапсуляции в ООП.

Назначение:

1.Инкапсуляция / Сокрытие данных: Основная цель — скрыть внутреннее

представление данных класса (поля обычно объявляются как ). Это предотвращает прямой неконтролируемый доступ к полям извне класса.

2.Контролируемый доступ:

Геттеры предоставляют доступ "только для чтения" к значению поля.

Сеттеры предоставляют доступ "только для записи" или "для изменения" значения поля.

3. Добавление логики при доступе:

В геттере можно выполнить дополнительную обработку перед возвратом значения (например, форматирование, вычисление производного значения).

В сеттере можно выполнить валидацию (проверку корректности) нового значения перед его присвоением полю, логирование изменений, уведомление других частей системы об изменении.

4.Гибкость и поддержка изменений: Если внутренняя реализация поля изменится (например, тип данных или способ хранения), можно изменить логику геттеров и сеттеров, не затрагивая код, который использует класс через эти методы (если их сигнатуры остаются прежними).

5.Поддержка свойств (Properties) в некоторых фреймворках: Многие фреймворки и библиотеки (например, JavaBeans, JavaFX, Spring) используют

соглашения об именовании геттеров и сеттеров для автоматического обнаружения и работы со свойствами объектов.

Синтаксис и соглашения об именовании:

Геттер (Getter / Accessor Method):

Назначение: Получить (прочитать) значение поля.

 

 

Имя: Обычно начинается с префикса

, за которым следует имя поля с

первой буквой в верхнем регистре.

 

 

 

Для поля

геттер будет

 

.

 

Для поля

геттер будет

.

 

 

Для

полей: Часто используется префикс

вместо

.

Для поля

геттер может быть

 

 

(предпочтительнее) или

.

 

 

Модификатор доступа: Обычно

.

 

 

Тип возвращаемого значения: Должен совпадать с типом поля, значение которого он возвращает.

Параметры: Обычно не принимает параметров.

Тело: Просто возвращает значение соответствующего поля.

Сеттер (Setter / Mutator Method):

Назначение: Установить (изменить) значение поля.

Имя: Обычно начинается с префикса , за которым следует имя поля с первой буквой в верхнем регистре.

Для поля сеттер будет .

Для поля сеттер будет .

Модификатор доступа: Обычно .

Тип возвращаемого значения: Обычно (ничего не возвращает). Иногда может возвращать ссылку на сам объект () для поддержки текучих интерфейсов (method chaining), но это реже для стандартных сеттеров. Параметры: Принимает один параметр, тип которого совпадает с типом поля, значение которого он устанавливает.

Тело: Присваивает переданное значение соответствующему полю. Может включать логику валидации.

Пример класса с геттерами и сеттерами: