OOP, Generics Flashcards

1
Q

Что такое класс?

A

Разновидность типа данных в ООП, характеризуемый способом своего построения.
Логическая конструкция, структура.
Шаблон для построения объекта.
Пользовательский тип данных.
Действует согласно инкапсуляции, содержит переменные и методы.

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

Что такое объект?

A

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

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

Какие у объекта есть характеристики?

A

Состояние
Поведение
Идентичность (by hashcode())

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

Что такое пакет в Java

A

Это механизм позволяющий организовывать Java классы и интерфейсы в пространстве имен.

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

Возвращает ли конструктор какое-то значение?

A

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

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

Может ли конструктор быть final?

A

Нет это ошибка компиляции.

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

Что такое наследование?

A

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

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

Какой класс является предком всех классов в Java?

A

Object

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

Что такое переопределение методов?

A

Это когда дочерний класс делает свою специфическую реализацию метода из родительского класса.

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

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

A

Определение в одном классе двух и больше методов с одинаковым именем, но разной сигнатурой.

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

Нет это ошибка компиляции?

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

Что такое IS-A отношение в ООП?

A

Это отношение более известное как наследование. Преимуществом есть возможность повторного использования поведения. Например: мотоцикл это транспортное средство и машина это транспортное средство.

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

Что такое отношение HAS-A?

A

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

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

Почему нельзя переопределять статические методы?

A

Переопределение подразумевает выполнение метода Б при вызове метода А, если Б переопределяет А. Статичный вызов точно определяет, какой именно метод будет выполнен.

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

Можем ли перегрузить переопределенный метод?

A

Да, можем.

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

Что такое виртуальный метод? Какие методы в Java называются виртуальными?

A

Виртуальный метод - это метод который можно переопределить. В Java все методы виртуальные.
Что запретить переопределять метод (сделать его не виртуальным), нужно сделать его final.

21
Q

Как можно изменить тип возвращаемого значения метода, при переопределении?

A

Позволяет только расширять тип.

22
Q

Как запретить переопределять метод?

A

final
private
static

23
Q

Можно ли переопределить или перегрузить main method?

A

main должен быть static, потому переопределять нельзя.

перегрузить можно

24
Q

Что такое динамическое и статическое связывание?

A

Динамическое - тип объекта определяется во время выполнения.

Статическое - тип объекта определяется при компиляции.

25
Q

Что такое абстракция?

A

Это процесс сокрытия деталей реализации от пользователя.

26
Q

Чем абстракция отличается от инкапсуляции?

A

Абстракция сокрывает детали реализации, а инкапсуляция объединяет данные и логику в единое целое, определяя контракт(методы и сигнатуры) для работы с данными.

27
Q

Может ли абстрактный метод быть в обычном классе?

A

Нет, если в классе есть хотя бы один абстрактный метод, тогда класс должен быть абстрактным.

28
Q

Может ли метод быть private abstract?

A

Нет, ошибка компиляции.

abstract говорит о том то метод должен быть переопределен, а private запрещает к нему доступ.

29
Q

Что такое ассоциация?

A

Это отношение между объектами. Например учитель и студент.

30
Q

Что такое агрегация?

A

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

31
Q

Что такое композиция?

A

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

32
Q

Что может находиться в интерфейсах?

A
abstract, default, static методы
константы
static классы
Enum
default методы (Java 8)
private методы (Java 9)
33
Q

Что будет если в интерфесе объявить переменную?

A

После компиляции она станет константой т.е. public static final

34
Q

Что такое marker interface?

A

Это интерфейс без реализации, но он указывает на какое то свойство экземпляра класса.
Например: Serializable, Cloneable

35
Q

Что такое вложенный класс?

A
Это класс объявленный внутри другого класса.
Static member class
Inner class
Member class
Anonymous class
local class
36
Q

Что такое static member class

A

Это обычный класс, только имеет доступ к нему как к статическому члену.

37
Q

Чем отличается member class от method local class?

A

method local class вложен в метод и отличается областью видимости.

38
Q

Что такое анонимный класс?

A

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

39
Q

Может ли static nested class получить доступ к статическим методам или переменным внешнего класса?

A

Нет, не может. Это как статический доступ к статическим членам класса.

40
Q

Зачем использовать вложенные классы?

A

Группировка родственных классов.
Повышение инкапсуляции.
Код становиться читаемым и поддерживаемым.
Сокрытие реализации.

41
Q

Как создать экземпляр static nested class?

A

OuterclassName.StaticNestedClassName ref = new OuterclassName.StaticNestedClassName();

42
Q

Как создать экземпляр inner class?

A

OuterClassName.InnerclassName inner = new OutherClassNameReferance.new InnerClassName();

43
Q

Что такое сокрытие переменных в Java?

A

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

44
Q

Что такое generic в Java?

A

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

45
Q

Как работают generic в Java?

A

Generic-и реализованы, используя “затирание типов” при компиляции. Например, во время выполнения, то что было List станет просто List

46
Q

Что такое дженерики с ограничениями? Какие есть типы таких дженериков?

A

extends T>, super T>

47
Q

Как использовать generic с массивами?

A

Массивы не работают с generic

48
Q

Где в JDK используются gereneric?

A

Collection framework больше всего использует generic