Я думаю, что это зависит от языка и реализации.
Я знаю, что в C ++, если вы делаете #include, это так же хорошо, как копировать и вставлять файл, который #include. Поэтому, когда вы делаете это, вы по сути вносите любой импорт ... до тех пор, пока он не конфликтует с сущностями в пространстве имен, все должно быть хорошо. Просто убедитесь, что у каждого файла * .h есть одна #pragma или есть раздел #ifndef.
В Java вам нужно быть явным. Исходя из моего личного опыта, это потребует декларации всех использованных типов. Не уверен насчет бэкэнда, но, по крайней мере, моя IDE жалуется, что, я полагаю, исходит от javac.