The good part about C++ is that there is more than a single way how to approach it and how to use it. Look at other languages: Every java program looks pretty much alike - there is only one style that is supported by java, this is the correct style, and everything else is wrong.
There are different styles in Java as well.
Some 'design' for extensible use of anonymous subclasses.
Some use other styles, there are many. Especially with Java 8 where Closures came into play.
But I agree, Java, like C++, gives you more opportunity to architecture your program better. Abstractions, Dependency Inversion, etc., its all a bit easier to implement.
Cheers