The interface to each module is defined in such a way as to reveal as little as possible about its inner workings. Simula and Object Pascal provide no protection for objects, meaning instance variables may be accessed wherever visible. CLOS and Ada allow methods to be defined outside of a class, providing functions and procedures. However most object-oriented languages provide a well defined interface to their objects thru classes. A Stack's Push and Pop methods will be public.
Private members are only accessible from within a class.
A Stack's representation, such as a list or array, will usually be private. A Stack's representation could be declared protected allowing subclass access. Eiffel 3.0 allows exporting access to specific classes. All Smalltalk instance variables can be accessed by subclasses, helping with abstract classes and overriding. Methods can only access the receiver in per-object protection.