Файл: Ооп (Объектноориентированное программирование).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 30.11.2023

Просмотров: 14

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1) Что такое ООП? В чем его плюсы?
ООП (Объектно-ориентированное программирование) – это способ программирования, основанный на представлении программы в виде совокупности объектов, каждый из которых является экземпляром отдельного класса, а классы образуют иерархию наследования.
Плюсы:
- В парадигме объектов легче писать код (удобно один раз создать класс или метод, а потом его использовать, не нужно повторно переписывать десятки строк кода);
- Читать код гораздо проще;
- Код легче обновлять (класс или метод достаточно изменить в одном месте, чтобы он изменился во всех наследуемых классах и объектах);
- Код можно переиспользовать;
2) Перечислите основные принципы ООП.
- Абстракция скрывает сложности реализации и предоставляет более простые интерфейсы ( абстрактные классы, интерфейсы);
- (3) Инкапсуляция – это сокрытие деталей реализации в классе. Доступ к необходимым данным предоставлен через специальные паблик методы.
- (4) Полиморфизм – Свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
- (5) Наследование - это возможность создать новый дочерний класс на основе родительского класса, но с расширением функциональности.
6) Что такое класс? Объект?
Класс – это шаблон объекта. Он определяет, как объект будет выглядеть, и какими функциями обладать.
Объект - это конкретный экземпляр класса, функциональность которого полностью ограничена самим классом.

7) Как передаются объекты в метод?
В виде аргументов метода
Для примитивов: передается копия примитива (значение);
Для ссылочных: передается ссылка на объект.
8) Что такое переопределение метода?
Переопределение - одна из возможностей языка программирования, позволяющая подклассу или дочернему классу обеспечивать специфическую реализацию метода, уже реализованного в одном из суперклассов или родительских классов.
9) Что такое перегрузка метода?
Перегрузка – использование методов с одними и теми же названиями, но с разными параметрами в одних и тех же классах.
10) Что такое нативные методы? Их плюсы и минусы.
Нативные методы - методы, написанные на других языках (C, C++, ассемблер)
Минусы: При обращении к методам native свойства переносимости и безопасности, присущие коду Java, будут утрачены.
Плюсы: более быстрая скорость работы.
11) Какие модификаторы доступа могут быть у класса?
- Public
(данный модификатор позволяет получать доступ к переменным/методам из любого места программы); (методы, классы, поля, конструкторы)
- Protected (доступ в пакетах и классах наследниках); (поля, методы, конструктор)
- Default (предоставляет доступ во всем пакете)
- Private (данный модификатор ограничивает область видимости переменных/методов, делая их доступными только в самом классе
(конструкторов, методов и переменных));


12) Что такое final? Что может быть final? Как они работают?
Final – это ключевое слово, которое может применяться к классам, методам переменным (в т.ч. аргументам метода)
- для класса означает, что класс не может иметь подклассов, т.е. запрещено наследование;
- для метода означает, что он не может быть переопределен в классах;
- для переменной – когда-то присвоенное значение не может быть изменено;
- для ссылочных переменных - это означает, что после присвоения объекта, нельзя изменить ссылку на данный объект. Это важно! Ссылку изменить нельзя, но состояние объекта изменять можно.
13) Как реализована неизменность String?
- final;
- нет сеттеров;
- модификатор доступа private;
14) Как реализовать свой Immutable тип данных?
- Сделать класс final;
- Сделать переменные private и final;
15) Что такое ключевое слово static? Что может быть static?
Static - модификатор, применяемый к полю, методу, блоку и внутреннему классу он указывает на привязку субъекта к текущему классу.
16) Могут ли нестатические методы перегрузить статические?
Да. В итоге получится два разных метода. Статический будет принадлежать классу и будет доступен через его имя, а нестатический будет принадлежать конкретному объекту, и доступен через вызов метода этого объекта.
17) Что такое пакет? Как создать пакет?
Пакет (Package) в Java — это способ объединить группу классов, интерфейсов и подпакетов.
Создать пакет - package name;

18) Что такое конструкторы? Конструктор по умолчанию?
Конструктор – специальный блок кода, похожий на метод, предназначенный для инициализации полей объекта при его создании
Конструктор по умолчанию – конструктор, который не имеет параметров
19) Расскажи, что такое this и super? Когда мы обязаны использовать this и super?
Ключевое слово this - это ссылка на объект текущего класса;
super - ссылка на объект его родительского класса;
20) Класс Object и все методы кроме wait, notify, notifyAll
Object – это специальный класс от которого наследуется все классы
Класс object имеет свои методы, такие как:
- toString - возвращает символьную строку описывающую объект;
- equals() - сравнивает объекты;
- hashCode() - возвращает хеш-код, связанный с вызывающим объектом;
- clone() - создает объект не отличающийся от клонируемого;
- getClass - получает класс объекта во время выполнения;
- finalize() - вызывается при сборке мусора;
21) Зачем нужен метод finalize?
Этот метод вызывается Java-машиной у объекта перед тем, как объект будет уничтожен. Фактически этот метод – противоположность конструктору. В нем можно освобождать ресурсы, используемые объектом.
22) Из-за чего происходят коллизии?
Ситуация, когда у разных объектов одинаковые хеш-коды называется — коллизией.
23) В чём разница между instanceOf и getClass?
При использовании getClass вы можете проверить только принадлежность к определенному классу и не более.
При использовании instanceOf вы можете проверить как принадлежность к классу, так и к родительским классам.


24) Перечислите методы именно класса Enum? values() – статические метод, возвращает массив всех значение enum; ordinal() – возвращает порядковый номер константы; valueOf() – возвращает элемент перечисления с названием в скобках;
25) Что такое интерфейс? Когда использовать интерфейс?
Интерфейсы определяют некоторый функционал, не имеющий конкретной реализации, который затем реализуют классы.
26) Можно ли создать поля в интерфейсе?
- поля должны быть проинициализированы;
- поля считаются публичными статическими финальными;
- модификаторы public, static и final не нужно указывать явно (они
«проставляются» по умолчанию).
- могут быть другие интерфейсы
- статичные методы с реализацией
- дефолтные методы?
27) Есть ли в Java множественное наследование? Зачем реализовывать интерфейс интерфейсу?
Множественного наследия нет.
Для расширения интерфейса
28) Можно ли создавать статик методы в интерфейсах?
Можно, статические методы похожи на методы по умолчанию, за исключением того, что мы не можем переопределить их в классах, реализующих интерфейс.
29)
Что такое абстрактный метод?
Абстрактный метод - это метод, который должен быть реализован для создания конкретного класса.

30) Что такое абстрактный класс? Чем отличается от обычного?
Класс, в объявлении которого есть ключевое слово abstract. Он отличается от обычного класса тем, что нельзя создать объект или экземпляр данного класса. Только абстрактный класс может иметь абстрактный метод, у которого нет реализации только объявление.