我來自C++背景,現在正在嘗試學習Java。對於C++類,我們經常將接口和實現文件分別分成foo.h
和foo.cpp
。在此之後,我們將鏈接使用#include statement
如何將類分離爲Java的接口和實現
對於Java,我如何將接口和實現分成兩個單獨的文件,類似於我在C++中完成的操作,要採取的步驟是什麼?
我來自C++背景,現在正在嘗試學習Java。對於C++類,我們經常將接口和實現文件分別分成foo.h
和foo.cpp
。在此之後,我們將鏈接使用#include statement
如何將類分離爲Java的接口和實現
對於Java,我如何將接口和實現分成兩個單獨的文件,類似於我在C++中完成的操作,要採取的步驟是什麼?
有interface
關鍵字,它允許您聲明公共API,實施類可以使用implements
來利用公共API。這是儘可能接近你想要的分離。 Java的設計方式不同,不存在頭文件等。頭文件不會在C++中充當接口,它們只是編譯器所需的單元,因此編譯器知道在哪裏找到方法簽名。C++中對於接口概念更正確的等價物是抽象基類。
爲了回答爲什麼...好,我就引導您到這個已經回答了問題here
在Java中沒有這樣的區別。
您可以做的最接近的事情是對接口和接口的實現進行嚴格的分離(通常推薦的東西)。
因此,例如,你可以有一個
IMyInterface.java
public interface IMyInterface {
}
和MyImplementation.java
public class MyImplementation implements IMyInterface {
}
但是......這是不一樣的....它更像是C++抽象類和C++實現類。
...我們經常拆分接口和實現文件到
foo.h
和foo.cpp
...
這不是真的,你是在混淆的術語類聲明和(抽象)接口 。
Java沒有頭文件的概念,也沒有區分類聲明和類定義。
簡單的說你就不要。 –
@CaptainObvlious你爲什麼不這樣做? – Computernerd
從這個答案可能會有所幫助:http://stackoverflow.com/questions/7092199/is-it-correct-that-header-files-in-c-and-abstract-class-interface-implementati?rq=1 –