[C++] クラス継承のアクセス修飾子 --- is an inaccessible base of

何度か間違えたのですが
class Base {};
class Derive : Base {};

と書くとC++ではエラーになります。
> 基底クラス is an inaccessible base of 派生クラス
(たしか、JAVAでは大丈夫でしたっけ?)

正しくは、
class Base {};
class Derive : public Base {};

とすることでアクセスできるようになるのですが、
C++でこの修飾子が必要なのはどうしてかなあ。
名前空間とかと関係あるのかなあ。

また、調べたら追記するかもしれません。