OOP, Generics Flashcards
Что такое класс?
Разновидность типа данных в ООП, характеризуемый способом своего построения.
Логическая конструкция, структура.
Шаблон для построения объекта.
Пользовательский тип данных.
Действует согласно инкапсуляции, содержит переменные и методы.
Что такое объект?
Сущность в виртуальном пространстве, обладающая поведением, состоянием, свойствами, имеющая набор методов для изменения состояния.
Объекты принадлежат одному или нескольким классам.
Какие у объекта есть характеристики?
Состояние
Поведение
Идентичность (by hashcode())
Что такое метод с точки зрения ООП?
Это средство описания логики работы с данными
Что такое пакет в Java
Это механизм позволяющий организовывать Java классы и интерфейсы в пространстве имен.
Что такое конструктор по умолчанию?
Конструктор по умолчанию - создается компилятором, если в классе нет других конструкторов.
Возвращает ли конструктор какое-то значение?
Да, он возвращает ссылку на созданный объект. Потому и нельзя объявлять тип возвращаемого значения.
Может ли конструктор быть final?
Нет это ошибка компиляции.
Что такое наследование?
Это механизм, который позволяет экземпляру одного класса приобретать свойства и поведение другого класса.
Какой класс является предком всех классов в Java?
Object
Что такое полиморфизм?
Полиморфизм в ООП означает возможность применения одноименных методов с одинаковыми или различными наборами параметров в одном классе или в группе классов, связанных отношением наследования.
Что такое переопределение методов?
Это когда дочерний класс делает свою специфическую реализацию метода из родительского класса.
Что такое перегрузка(overload) метода?
Определение в одном классе двух и больше методов с одинаковым именем, но разной сигнатурой.
Чем отличается полиморфизм от переопределения и перегрузки?
Перегрузка и переопределение это частные случаи полиморфизма.
Можно ли изменить тип возвращаемого значения при перегрузке?
Нет это ошибка компиляции?
Что такое IS-A отношение в ООП?
Это отношение более известное как наследование. Преимуществом есть возможность повторного использования поведения. Например: мотоцикл это транспортное средство и машина это транспортное средство.
Что такое отношение HAS-A?
Это отношение известно как композиция или агрегация. Когда один объект полностью или частично владеет жизненным циклом другого объекта.
Почему нельзя переопределять статические методы?
Переопределение подразумевает выполнение метода Б при вызове метода А, если Б переопределяет А. Статичный вызов точно определяет, какой именно метод будет выполнен.
Можем ли перегрузить переопределенный метод?
Да, можем.
Что такое виртуальный метод? Какие методы в Java называются виртуальными?
Виртуальный метод - это метод который можно переопределить. В Java все методы виртуальные.
Что запретить переопределять метод (сделать его не виртуальным), нужно сделать его final.
Как можно изменить тип возвращаемого значения метода, при переопределении?
Позволяет только расширять тип.
Как запретить переопределять метод?
final
private
static
Можно ли переопределить или перегрузить main method?
main должен быть static, потому переопределять нельзя.
перегрузить можно
Что такое динамическое и статическое связывание?
Динамическое - тип объекта определяется во время выполнения.
Статическое - тип объекта определяется при компиляции.
Что такое абстракция?
Это процесс сокрытия деталей реализации от пользователя.
Чем абстракция отличается от инкапсуляции?
Абстракция сокрывает детали реализации, а инкапсуляция объединяет данные и логику в единое целое, определяя контракт(методы и сигнатуры) для работы с данными.
Может ли абстрактный метод быть в обычном классе?
Нет, если в классе есть хотя бы один абстрактный метод, тогда класс должен быть абстрактным.
Может ли метод быть private abstract?
Нет, ошибка компиляции.
abstract говорит о том то метод должен быть переопределен, а private запрещает к нему доступ.
Что такое ассоциация?
Это отношение между объектами. Например учитель и студент.
Что такое агрегация?
Это специальная форма ассоциации, когда объекты обладают контролем над своим жизненным циклом, но есть зависимость от дочернего к родительскому объекту.
Что такое композиция?
Это сильная форма агрегации, когда дочерний объект не управляет своим жизненным циклом.
Что может находиться в интерфейсах?
abstract, default, static методы константы static классы Enum default методы (Java 8) private методы (Java 9)
Что будет если в интерфесе объявить переменную?
После компиляции она станет константой т.е. public static final
Что такое marker interface?
Это интерфейс без реализации, но он указывает на какое то свойство экземпляра класса.
Например: Serializable, Cloneable
Что такое вложенный класс?
Это класс объявленный внутри другого класса. Static member class Inner class Member class Anonymous class local class
Что такое static member class
Это обычный класс, только имеет доступ к нему как к статическому члену.
Чем отличается member class от method local class?
method local class вложен в метод и отличается областью видимости.
Что такое анонимный класс?
Это такой класс, который автоматически объявляется, описывается и экземпляр которого создается по середине выражения.
Может ли static nested class получить доступ к статическим методам или переменным внешнего класса?
Нет, не может. Это как статический доступ к статическим членам класса.
Зачем использовать вложенные классы?
Группировка родственных классов.
Повышение инкапсуляции.
Код становиться читаемым и поддерживаемым.
Сокрытие реализации.
Как создать экземпляр static nested class?
OuterclassName.StaticNestedClassName ref = new OuterclassName.StaticNestedClassName();
Как создать экземпляр inner class?
OuterClassName.InnerclassName inner = new OutherClassNameReferance.new InnerClassName();
Что такое сокрытие переменных в Java?
Это когда переменные с одинаковым именем перекрывают друг друга.
сокрытие переменной экземпляра, когда совпадают имена поля и параметры метода.
сокрытие переменной при наследовании(как overloading но для поля)
Что такое generic в Java?
Это механизм, который позволяет писать обобщенный код, который работает с различными типами (классами)
Как работают generic в Java?
Generic-и реализованы, используя “затирание типов” при компиляции. Например, во время выполнения, то что было List станет просто List
Что такое дженерики с ограничениями? Какие есть типы таких дженериков?
extends T>, super T>
Как использовать generic с массивами?
Массивы не работают с generic
Где в JDK используются gereneric?
Collection framework больше всего использует generic