在 Java 中针对接口进行编程是否与在 C/C++ 中使用头文件具有相同的概念?

2022-09-03 01:16:47

我目前正在处理的java代码通常具有如下结构:

文件控制器.java:

interface Controller {...}

文件控制器.java:

class ControllerImpl implements Controller {...}

但对于每个接口,只有一个实现。这与在C / C++中使用头文件不同吗,在C / C++中,我将代码拆分为文件,例如

Controller.hpp
Controller.cpp

据我所知,C/C++中的头文件已经被引入来帮助编译器,这在Java中不再是必需的。此外,头文件应该有助于提高代码的可读性,但是具有折叠和大纲视图的现代IDE也不再是必需的。

那么,为什么人们再次通过针对接口进行编程,通过后门引入Java中的头文件呢?


答案 1

哈哈在C++中,文件(头)与类不同

像在Java中那样针对接口进行编程也可以通过针对抽象基类进行编程来完成C++。

但是,Java术语“接口”受到很大限制。基本上,任何函数声明都是一个接口:

void call_me(int times); 

当然,类和其他类型的也是如此。

在C++中,您将此类内容分组到标头中,因此接口可以由一个标头组成。但是,它可能也由多个标头组成。


答案 2

接口不是出于保留头文件的愿望。

最接近Java的接口支持 http://en.wikipedia.org/wiki/Design_by_contract