SIFI (Separating Interface From Implementation). In C++ you specify how to use your program in a separate file
*.hpp from where you define how the code works *.cpp. In Java, you put all the information in one file *.java, but Javadoc splits it out for you and the compiler uses the
separate *.class file headers to figure out how code should be
called. Ironically, Java actually provides much greater isolation for how a method is
called from how it is implemented, since in Java,
the absolute offsets are not computed until the program is run. In C++ they are computed at compile/link time. This isolation means
Java does not need to recompile as frequently, e.g. when a private method is added to
some class the caller uses.