Экзамен ООП | Блок 9 Flashcards
Что такое enum? Когда можно его применять?
enum - класс-перечисление, содержащий набор констант или статических объектов, каждый из которых является объектом анонимного класса.
Применяется для хранения неизменяемых значений - таких как Статус.
Может содержать:
- Поля;
- Методы;
- Конструкторы (private);
Может быть объявлен:
1. Как отдельный класс (public);
2. Как вложенный класс (public, private);
3. Как внутренний класс (private);
Наследование и интерфейсы:
1. Может имплементировать интерфейсы;
2. Не может наследовать классы и быть наследованным;
Что такое record? Когда можно его применять?
Record - это неизменяемая модель данных. Record используется для быстрого создания стандартной модели данных - класса носителя данных. Добавлен в Java 14.
```Java
public record PersonRecord(String name, int age) { }
~~~
- Поля private final name и private final age.;
- Канонический конструктор (параметры которого - поля класса);
- Методы equals() и hashCode();
- Шаблонный метод toString();
- Геттеры реализованы через методы .name() и .age();
> [!info]
Так как это неизменяемая модель данных, то у нее отсутствуют сеттеры, а все поля являются final.
- В record можно добавлять ТОЛЬКО статические поля.
- В record можно добавлять любые методы (статические и нестатические).
- Record является final, поэтому наследование этого класса невозможно.
- Record наследует java.lang.Record, поэтому не может наследовать другие классы.
- Record может реализовывать Интерфейсы.
Для записей типа record доступен особый вид конструктора, называемый компактным конструктором. Он используется в случае, когда нам необходимо добавить в стандартный конструктор какую-то дополнительную логику (например, валидацию).
Если в record уже объявлен компактный конструктор, то явно объявить еще и канонический конструктор в этом классе невозможно, так как при объявлении компактного конструктора автоматически создается конструктор по умолчанию, чтобы провести инициализацию всех полей перед выполнением команд компактного конструктора, следовательно нельзя еще раз объявить в классе такой же конструктор с теми же параметрами.
``` Java
public record Contact(String name, String email) {
public Contact {
if(!email.contains(“@”)) {
throw new IllegalArgumentException(“Invalid email”);
}
}
}
Что такое varargs? В каких случаях стоит его применять?
varargs или variable arguments - это механизм, который позволяет обрабатывать аргументы произвольной длины. Он обозначается тремя точками ...
после объявления типа и подразумевает 0 и более передаваемых аргументов, например:
```Java
public static String text(int x, int y, String… strings) {
~~~
Все аргументы неявно помещаются в массив и передаются в метод. Если аргументов нет, то длина массива, полученного в методе, будет равна 0.
##### Особенности:
* Указать varargs можно_только_как параметр какого-либо метода;
* Параметр varargs всегда должен быть объявлен последним;
* В сигнатуре метода может объявлен только один параметр varargs;
* Методыс аргументами произвольной длины можно перегружать;
Появился в Java 5.
В каких случаях может возникнуть неоднозначность при работе с varargs?
Неоднозначность может возникать в случаях перегрузки метода с аргументами переменной длины.
- Два метода с varargs и разными типами. Вызываем метод без аргументов.
- Два метода, в одном varargs, во втором первый аргумент того же типа, что и varargs. Вызываем метод с передачей одного аргумента.
Что такое исключения? Какие типы исключительных ситуаций бывают?
Исключение - это ненормальное состояние, которое возникает в кодовой последовательности во время выполнения. Другими словами, исключение является ошибкой времени выполнения.
Обработка исключений в Java управляется пятью ключевыми словами:
1. try;
2. catch;
3. throw;
4. throws;
5. finally;
Все типы исключений являются подклассами встроенного класса Throwable, который делится на подклассы Error и Exception. Exception разделяется на подклассы RuntimeException и IOException.
Все подклассы Error и RuntimeException относятся к т.н. Непроверяемым исключениям. Такие исключения не обязательно включать в список throws.