Quote Originally Posted by BerislavLopac
Personally, no OO development needs any levels besides public and private (acting as current protected). Everything else just makes the point of access control unclear, which helps no one. So, since we already have a keword too many, I am against any further levels, namespace or any other.
I can think of plenty of reasons why you'd want a distinction between private and protected, especially in the case where you're designing a base class that you expect others to inherit from.

I could very easily argue that you don't "need" anything other than private, because you should be doing all variable access through getters and setters. Hell, I could argue that you don't need any member variables at all.

The things exist because they're useful. If something is useful enough to make sense to a large percentage of users, then it should be considered (and weighed against possible drawbacks, development time, other ways of implementing, etc.) This is true for any feature of any language.