I'm pretty much clear about the access modifiers in C++, Java and Ruby but there is one thing that always confused me... I want to jot it down so that I don't forget again...
In C++, protected is like private except that subclasses can access protected members.
However, in Java, protected is like default except that subclasses (even those outside the original class's package) can access protected members.