Basically, it’s allowed because they didn’t feel like it’s worthwhile to put a special case prohibiting the private
modifier. It’s like how you can also declare methods on an interface as public
, or nested classes in an interface as static
, even though those keywords are implied in interfaces. You can also declare final
methods on a final
class, etc.
Java took the stance of not complaining when you add redundant modifiers. They do it consistently.