I am studying OSGI and it seems that it always wants me to create a interface, then my code and put the whole thing in one package. In C++ this sort of thing in forced with the .h file besides the fact if you forgot to program a method it will still compile. Is it good programming practice to always create a interface? Before this I have just threw everything into one package and used inheritance.