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

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

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

Выполнение блоков инициализации экземпляра (если они есть).

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

4. Возврат ссылки на созданный объект/массив:

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

Эта ссылка обычно присваивается переменной соответствующего типа.

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

Создание объекта класса:

Создание массива:

Что произойдет, если память не может быть выделена?

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

В итоге, оператор — это ключ к динамическому созданию объектов и управлению памятью в Java (хотя само освобождение памяти выполняется сборщиком мусора). Без невозможно было бы создавать экземпляры

классов и работать с объектно-ориентированной парадигмой в полной мере.

34. Можно ли вызвать static-метод внутри обычного метода?

Да, можно.

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

Почему это возможно:

Статические методы принадлежат классу, а не конкретному экземпляру. Они существуют независимо от того, созданы ли объекты класса.

Метод экземпляра выполняется в контексте конкретного объекта, но он также "знает" о классе, к которому принадлежит этот объект. Поэтому он может обращаться к статическим членам (полям и методам) этого класса.

Как это делается:

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

Пример:

Резюме:

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

35. Как вызвать обычный метод класса внутри static-метода?

Напрямую — нельзя.

Статический метод принадлежит классу и не связан с каким-либо конкретным экземпляром (объектом) этого класса. Обычный метод (метод экземпляра), наоборот, всегда вызывается на конкретном объекте и работает с его состоянием (полями экземпляра).

Почему нельзя напрямую:

У статического метода нет ссылки . Он не знает, для какого объекта вызывать обычный метод. Если бы это было разрешено, какой экземпляр должен был бы использоваться? Неопределенность.

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

Как это можно сделать (косвенно):

Чтобы вызвать обычный метод из статического метода, статический метод должен

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

Это можно сделать несколькими способами:

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

2. Передать экземпляр в качестве параметра статического метода:

Пример:

Резюме:

Статические методы работают на уровне класса, методы экземпляра — на уровне объекта. Чтобы из "мира классов" (статического контекста) взаимодействовать с "миром объектов" (вызвать метод экземпляра), нужна конкретная "дверь" в этот мир — ссылка на объект.

36. Для чего используется в Джава ключевое слово this?

Этот вопрос уже подробно разбирался в пункте 28. Использования this для доступа

к компонентам класса.

Кратко повторим основные моменты:

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

Основные случаи использования :

1. Разрешение конфликтов имен (Variable Shadowing):

Когда параметр метода/конструктора или локальная переменная имеет то же имя, что и поле экземпляра, используется для явного обращения к полю экземпляра.

2. Вызов другого конструктора того же класса (Constructor Chaining):

вызывается из одного конструктора для вызова другого конструктора того же класса. Должен быть первой инструкцией.

3. Передача текущего объекта в качестве аргумента в другой метод:

Когда текущий объект нужно передать как параметр другому методу.

4.Возврат текущего объекта из метода (для текучих интерфейсов / Method Chaining):

Метод возвращает для возможности последовательного вызова других методов на том же объекте.

Важно:

нельзя использовать в методах или блоках инициализации, так как они не связаны с конкретным экземпляром класса.

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

37. Объявление и использование методов, объявленных с модификатором public static

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

Объявление:

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

: Модификатор доступа, означает, что метод доступен из любого другого класса в любом пакете.

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

: Тип данных, который метод возвращает (например, , , если ничего не возвращает).

: Идентификатор метода.

: Типы и имена параметров, которые метод принимает (может быть пустым).

Характеристики методов:

1.Принадлежность классу: Как и все статические методы, они принадлежат классу, а не объекту.

2.Вызов через имя класса: Наиболее правильный и распространенный способ вызова — через имя класса: .

3.Отсутствие : Внутри статического метода нет доступа к ключевому слову

, так как нет текущего экземпляра.

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

Могут напрямую обращаться только к другим статическим членам (полям и методам) того же класса.

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

5.Не могут быть переопределены (Overridden): Статические методы не участвуют в полиморфизме времени выполнения. Если подкласс определяет статический метод с той же сигнатурой, что и в суперклассе, это называется

сокрытием (hiding).

6.Глобальная доступность (из-за ): Любой код может вызвать этот метод, если класс, в котором он определен, доступен.

Использование методов:

1. Утилитарные (вспомогательные) методы:

Методы, которые выполняют общие, независимые от состояния конкретного объекта операции. Класс содержит множество таких методов (, , ). Класс (, ).

2. Фабричные методы (Factory Methods):

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

3. Метод - точка входа в приложение:

Главный метод Java-приложения всегда объявляется как

.

: Чтобы JVM мог вызвать его извне.