Java のいいと思ったところ
interface サイコー
クラスのメソッドのうち一部に限定して外部に公開することができます。目的別にまとめておけば、クラス間の依存も最小限に抑えることができるので、個々のクラスの独立性を高めることができますし、他のプロジェクトで流用するのも簡単です。これまで、C++ の pure virtual 関数を interface 代わりとして多用してきたので、言語レベルでちゃんとサポートしているのは嬉しい話です。
#include やマクロ撤廃サイコー
C/C++ のように #include やマクロがないので、ヘッダの衝突や include の順番を入れ替えただけでコンパイルエラーが出る *1 、などのあほな副作用を気にする必要がないのは、まるで天国のようです(笑)。
C++ の時は id:logion:20060227#p1 や id:logion:20060602#p1 でも書いたようにヘッダ衝突によるコンパイルエラーを避けるために設計変更とかまでやってましたから…。