Private members of a class can only be accessed within the class itself and cannot be inherited by subclasses. Protected members can be accessed by subclasses even if they are in a different package and can be inherited. Private members make the data hidden and secure, while protected is less restrictive by allowing access to subclasses.