4. ООП. Классы и инкапсуляция (+Enum) Flashcards

1
Q

Назовите три кита ООП?

A
  1. Инкапсуляция - сокрытие деталей реализации за внешним интерфейсом
  2. Наследование - создание производных классов(subclass), наследующих свойства базового(superclass)
  3. Полиморфизм - программа может работать как с базовым классом, так и с производными
    классами, не зная о конкретной реализации.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое класс (class)?

A

Класс является шаблоном или описанием объекта

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое пакет (package)?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Чем отличается класс от объекта?

A

Класс является шаблоном для объекта, а объект это экземпляр, который создается по этому шаблону

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое поле? Какие виды полей вы знаете? Чем они отличаются

A

Поле - переменная класса или объекта, но не метода . Бывают статические и не статические. Статические доступны без создания объекта, а для не статических требуется объект.
Из обычных методов можно получить доступ к статическим полям, а из статических к обычным нельзя. Статические поля должны быть проинициализированы при объявлении

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Что такое инкапсуляция?

A

Инкапсуляция - сокрытие деталей реализации за внешним интерфейсом

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

За счёт чего в Java достигается инкапсуляция?

A

За счёт модификаторов доступа, использования геттеров и сеттеров и пакетов

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое модификатор доступа?

A

Ключевые слова определяющие область видимости

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Перечислите их в порядке расширения видимости

A
private - Class
default - Class, Package
protected - Class, Package, Subclass
public - Class, Package, Subclass, Global

Class - доступность члена в пределах данного класса(внутри {})
Package - доступность члена в пределах одного пакета
Subclass - доступность члена в пределах класса наследника
Global - доступность члена в произвольном пакете

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что обозначает и для чего применяется ключевое слово final?

A

final - модификатор, препятствующий изменению

значения или ссылки, после инициализации. Метод нельзя переопределить, а класс нельзя наследовать

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое конструктор? По умолчанию?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Для чего применяется ключевое слово super?

A

В конструкторе - для обращения к конструктору суперкласса, и для обращения к переменным суперкласса

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое перечисление?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Может ли перечисление иметь конструктор и методы?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Что такое перегрузка метода?

A

Имена методов (конструкторов) и тип возвращаемых данных одинаковые, с отличающимися параметрами, этот механизм называется перегрузка методов
(overloading).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что такое рекурсия?

A

Рекурсия - это когда метод вызывает сам себя. Такой
метод называется рекурсивным.

Рекурсивный метод включает в себя:
— базовый случай, он же условие остановки;
— шаг рекурсии, он же условие продолжения.

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

Можно выделить следующие взаимосвязанные преимущества рекурсии:

естественность (натуральность) выражения сложных, на первый взгляд, алгоритмов.
рекурсивный алгоритм более читабелен в сравнении с итерационным;
для многих распространенных задач рекурсию более легче реализовать чем итерацию. Рекурсия хорошо подходит для реализации алгоритмов обхода списков, деревьев, графов и т.д.
Недостатки рекурсии состоят в следующем:

по сравнению с итерацией многократный вызов рекурсивной функции работает дольше. Это связано с тем, что при вызове рекурсивного метода его параметры копируются в стек. Также запоминаются временные значения локальных внутренних переменных. При завершении вызова рекурсивной функции предыдущие значения параметров вытягиваются из стека, что приводит к лишним операциям. Итерационный алгоритм для такой же задачи работает быстрее;
для рекурсивного процесса нужно больше памяти чем для итерации. Это связано с тем, что при рекурсивном вызове нужно сохранять предыдущее значение внутренних переменных вызывающей функции, чтобы по завершении рекурсивного вызова восстановить ее выполнение. Таким образом, если рекурсивная функция вызывается много раз, то это может привести к чрезмерно большому использованию памяти.