4 января 2018
Тэги: Java, головоломки, ООП.
Такой вопрос на знание Java часто любят задавать на собеседованиях. Предположим, у вас имеется интерфейс, его реализация и наследник этой реализации.
А также имеется набор из трёх перегруженных методов. Один принимает этот интерфейс, другой – реализацию, а третий – наследника.
Вопрос: какой из этих методов будет использован, если мы захотим вызвать метод over() и передадим в него null?
Ответ: в таком случае на экране мы увидим слово «Child».
Поэтому можно выделить для себя такое мнемоническое правило, что при передаче null в перегруженный метод всегда будет использоваться наиболее частная реализация (наследник).
P.S. Пример несколько синтетический. На практике я бы избегал ситуации, когда в метод нужно передавать null. Вполне вероятно, что если внутри него нет специальной проверки, то будет NullPointerException.
Kotlin, Java, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.
06.09.2024 18:44 123
Хороший пример! Поскольку оба типа являются ссылочным, то nulltype пойдёт в более конкретную спецификацию MyChildObject