6. ООП. Полиморфизм и Композиция* Flashcards
Что такое полиморфизм?
- это принцип, который гласит, что имея всего один интерфейс, возможно иметь множество реализаций этого интерфейса.
Например, когда ссылка на родительский класс используется для ссылки на объект дочернего класса.
Полиморфизм - это возможность применения одноименных методов с одинаковыми или различными наборами параметров в одном классе или в группе классов, связанных отношением наследования.
Что такое интерфейс?
Интерфейс - это описание того, что может и должен уметь делать объект класса, который реализует этот интерфейс. То есть, описание сигнатур методов. Внутри интерфейса находятся названия методов, возвращающие и входящие значения, и все. Ну можно еще обозначить там какие-то переменные, но они сразу становятся неявно public static final, и могут быть доступны из любой части программы
Можно ли создать интерфейс без методов (развернутый ответ)?
Да, возможно иметь интерфейс без метода в Java.
Интерфейсы без каких-либо методов действуют как маркеры. Они лишь говорят компилятору, что объекты классов, которые имплементят такой интерфейс без методов, должен иметь отличительные черты, восприниматься по-другому. Например, java.io.Serializable, java.lang.Cloneable. Маркерные интерфейсы также известных как “теги”, поскольку они добавляют общий тег ко всем унаследованым классам, объединяя их в одну категорию.
Что такое абстрактный класс?
Абстрактный класс - это класс, который не предполагает создания экземпляров. Такой класс
может содержать (или не содержать) абстрактные методы.
В чем отличие абстрактного класса и интерфейса?
● любой класс может расширить только один абстрактный класс, а
имплементировать интерфейсов может несколько.
● у интерфейса все методы являются абстрактными либо дефолтными, у абстрактного
класса может и не быть абстрактных методов.
● в абстрактном классе можно объявлять статические и нестатические
поля, в интерфейсе только статические финальные поля: константы.
●класс, связанный с каким-то интерфейсом, должен реализовать все его методы, кроме дефолтных
Что такое агрегирование?
Агрегирование - это когда класс содержит другой класс в качестве своего поля и делегирует
свои обязанности или их часть этому классу.
Не всегда для того, чтобы переиспользовать класс нужно от него наследоваться.
Что такое Singleton? Какими способами его можно реализовать?
это паттерн проектирования Синглтон - у класса может быть только один экземпляр.
Самый простой вариант: 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 создается не при загрузке программы, а только по вызову.
Есть синглтон для многопоточной среды, с проверкой существования объекта и сериализацией.(почитать)