Java-интерфейсы и файлы заголовка / реализации C ++ - это разные понятия.
C ++ имеет модель текстовой компиляции. Итак, чтобы использовать что-то - например, функцию - в вашем коде, компилятор должен сначала проанализировать определение этой функции. Помещая вещи в заголовочные файлы, которые вы хотите использовать из многих исходных файлов, это избавляет вас от необходимости переписывать определение функции, поскольку вы можете включить один и тот же заголовочный файл во многие исходные файлы, которые используют вещи из этого заголовка.
Функции в C ++ могут быть объявлены , просто написав имя функции и аргументы:
void PrintMessage(std::string text);
И они могут быть определены , написав также тело метода:
void PrintMessage(std::string text)
{
cout << text;
}
Вы можете определить функцию только один раз в модуле компиляции (это весь текст, который видит компилятор после того, как #includes были заменены текстом файла, который они включают). Но вы можете объявлять функцию много раз, если объявления одинаковы. Вы должны определить каждую функцию, которая вызывается один раз. Вот почему у вас есть файл .cpp для каждого файла .h. .Cpp определяет все функции, которые объявлены в файле .h. Файл .h включается во все файлы .cpp, которые используют функции, и включается один раз в файл .cpp, который определяет функции.
Java выясняет, где определения функций для вас, когда она компилирует проект так, как он просматривает все файлы в проекте. C ++ компилирует только один файл .cpp за раз и просматривает только #include заголовочные файлы.
Интерфейс Java эквивалентен абстрактному базовому классу C ++. По сути, это объявление набора методов, включая типы аргументов, которые они принимают, и тип их возвращаемых значений. Интерфейс Java или абстрактный базовый класс C ++ могут наследоваться классом Java или классом C ++, который фактически определяет (реализует), что представляют собой эти методы.
В C ++, когда вы создаете класс, вы обычно (есть исключения) помещаете объявления методов в заголовочный файл, а определения помещаете в файл .cpp. Но в Java вам нужно только написать определения методов, эти определения эквивалентны определению и объявлению C ++ в одном. Вы можете поместить все определения метода java в один файл.