И допустим у тебя есть функция которая возращает объект и выводит его на экран, в случае возрата пустого объекта или null по кол-ву кода для проверки выйдет аналогично. А по затратам памяти null будет эффективнее
А так же по быстродействию, ибо гораздо быстрее вернуть null чем плодить пустой объект который во время инициализации может создать еще кучу не нужного мусора
Объект пустой можно вернуть если требуется вывести мол что-то не удалось, для этого достаточно в конструкторе создаваемогт класса присвоить все нужные поля, но эти поля потом потребуется обработать при выводе на экран