Метод потомка возвращает более конкретный тип результата, чем метод родителя: считается ли это переопределением?
База Hintsage
Программирование Java
Язык Java, JVM и экосистема серверной разработки.
Темы раздела
Выберите подраздел
- 3 вопроса
Общие вопросы
Смешанные вопросы по Java.
Открыть раздел - 50 вопросов
Java Core
Базовая семантика языка, типы, методы, классы и ключевые конструкции.
Открыть раздел - 50 вопросов
ООП и система типов
Наследование, полиморфизм, интерфейсы, классы и разрешение методов.
Открыть раздел - 50 вопросов
Коллекции
Java Collections Framework, контракты, реализации и сложность операций.
Открыть раздел - 50 вопросов
Многопоточность
Java Memory Model, потоки, синхронизация и java.util.concurrent.
Открыть раздел - 50 вопросов
JVM и память
Загрузка классов, память JVM, GC, JIT и диагностика.
Открыть раздел - 50 вопросов
Generics
Параметризация типов, bounds, wildcards и стирание типов.
Открыть раздел - 50 вопросов
Stream API
Функциональные интерфейсы, streams, collectors и параллельная обработка.
Открыть раздел - 50 вопросов
Исключения
Иерархия исключений, обработка ошибок и управление ресурсами.
Открыть раздел
Практика
Вопросы: Программирование Java
Чем различаются правила начальной инициализации полей и локальных переменных в Java?
Какое требование предъявляется к локальной переменной, захватываемой лямбда-выражением в Java?
Практическая ситуация: класс-потомок объявил статический метод с тем же именем, что у родителя. Какую реализацию выберет Java при обращении через переменную типа родителя?
Что произойдёт в Java, если обработчик общего типа исключения объявлен перед обработчиком его подкласса?
Практическая ситуация: класс реализует два интерфейса с одноимёнными default-методами. Как Java разрешает конфликт?
Как Java выбирает поле при обращении через переменную типа родителя, если потомок объявил поле с тем же именем?
Практическая ситуация: определите, какое исключение увидит вызывающий код после выполнения метода run.
class Demo {
static class Resource implements AutoCloseable {
@Override
public void close() {
throw new IllegalStateException("close");
}
}
static void run() {
try (Resource resource = new Resource()) {
throw new IllegalArgumentException("body");
}
}
}
Из-за чего добавление нового проверяемого исключения в сигнатуру переопределяемого метода может нарушить компиляцию реализации потомка?
Рассмотрите ситуацию: при вызове метода с параметром примитивного типа ему передают null через ссылку-оболочку. На каком этапе и почему возникает ошибка?
Как ведёт себя Java при выполнении return из блока try, если блок finally завершает метод собственным return?
Практическая ситуация: переменная объявлена типом родителя, но ссылается на объект потомка с переопределённым экземплярным методом. Реализацию какого класса выберет Java при вызове?
Сравнение двух объектов Integer через ==: когда результат может зависеть от значения числа?
К каким последствиям приводит вызов переопределяемого метода из конструктора Java-класса?
Объясните механизм: почему объявление ссылочной переменной как final не делает объект неизменяемым?
Разберите обращение к статическому полю через null-ссылку: возникнет ли исключение при таком доступе?
Разберите последствия: какое исключение увидит вызывающий код, если тело try выбросило исключение, а блок finally завершился другим исключением?
Объясните, почему обработчик общего типа исключения нельзя ставить перед обработчиком его подкласса.
Разберите последствия выполнения метода: какое исключение попадёт в catch и где окажется ошибка закрытия ресурса?
class Demo {
static class R implements AutoCloseable {
void use() { throw new IllegalStateException("body"); }
@Override public void close() {
throw new IllegalArgumentException("close");
}
}
public static void main(String[] args) {
try (R r = new R()) {
r.use();
} catch (Exception e) {
System.out.println(e.getClass().getSimpleName());
System.out.println(e.getSuppressed().length);
}
}
}
Объясните механизм, из-за которого промежуточная операция Stream не обрабатывает элементы сразу после своего вызова.
Показано 361–380 из 403