6. ООП. Полиморфизм и Композиция* Flashcards

1
Q

Что такое полиморфизм?

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

Полиморфизм - это возможность применения одноименных методов с одинаковыми или различными наборами параметров в одном классе или в группе классов, связанных отношением наследования.

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

Что такое интерфейс?

A

Интерфейс - это описание того, что может и должен уметь делать объект класса, который реализует этот интерфейс. То есть, описание сигнатур методов. Внутри интерфейса находятся названия методов, возвращающие и входящие значения, и все. Ну можно еще обозначить там какие-то переменные, но они сразу становятся неявно public static final, и могут быть доступны из любой части программы

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

Можно ли создать интерфейс без методов (развернутый ответ)?

A

Да, возможно иметь интерфейс без метода в Java.

Интерфейсы без каких-либо методов действуют как маркеры. Они лишь говорят компилятору, что объекты классов, которые имплементят такой интерфейс без методов, должен иметь отличительные черты, восприниматься по-другому. Например, java.io.Serializable, java.lang.Cloneable. Маркерные интерфейсы также известных как “теги”, поскольку они добавляют общий тег ко всем унаследованым классам, объединяя их в одну категорию.

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

Что такое Singleton? Какими способами его можно реализовать?

A

это паттерн проектирования Синглтон - у класса может быть только один экземпляр.

Самый простой вариант:
public class Singleton {
    private Singleton(){...}
    public static final Singleton INSTANCE = new Singleton();
}
Ленивый вариант:
public class Singleton {
    private static Singleton instance;
private Singleton(){...}
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
Теперь наш instance создается не при загрузке программы, а только по вызову.

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

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