ООП 3 Flashcards

1
Q

восходящие преобразования (upcasting)

A

Преобразование потомка в родителя.
Dog dog = new Dog();
Animal animal = dog;
- Преобразование происходит автоматически, не требуя явного приведения типов.
- Методы, переопределенные в подклассе, всё равно будут вызываться, несмотря на то, что ссылка имеет тип суперкласса.
- После восходящего преобразования можно вызывать только методы и поля, которые определены в суперклассе, даже если объект фактически принадлежит подклассу.

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

нисходящие преобразования (downcasting)

A

Преобразование предка в потомка.
Animal animal = new Dog();
Dog dog = (Dog) animal;
- Всегда должно быть указано явно с помощью оператора приведения.
- Может привести к исключению времени выполнения, если объект не является экземпляром нужного типа.
- Восходящее преобразование ограничивает доступ к методам подкласса, а нисходящее преобразование позволяет вновь получить доступ к методам, специфичным для подкласса.

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

Чем отличается переопределение от перегрузки?

A

Переопределение используется тогда, когда вы переписываете (переделываете, переопределяете) УЖЕ существующий метод. Перегрузка — это использование одного имени, но с разными входными параметрами.

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

Способы копирования объектов

A
  1. Поверхностное копирование (Shallow Copy)
  2. Глубокое копирование (Deep Copy)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Поверхностное копирование (Shallow Copy)

A

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

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

Глубокое копирование (Deep Copy)

A

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

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

Способы поверхностного копирования

A
  1. Метод clone()
    Для использования этого метода класс должен реализовывать интерфейс Cloneable и переопределять метод clone().
  2. При помощи конструктора копирования.
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

оператор instanceof

A

Оператор instanceof возвращает true, если объект является экземпляром класса или его потомком.

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

Зачем нужны и какие бывают блоки инициализации?

A

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

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