Encapsulation
Encapsulation is a fundamental concept in OOP that deals with keeping some data (variables) and behavior (methods) private and protected from the other code that interacts with our class. We want to design our classes in such a way that we create a well-defined interface for them that rarely, or never, changes. This is so other code that relies on these classes is not dependent on the low-level implementation details of those classes. Therefore, we need a way to designate whether a method is public or private inside a class. In Ruby, there are three levels of privacy (also known as visibility) of methods:
- Public
- Private
- Protected
Public Methods
This is the default level of the visibility of methods in Ruby classes. When we define a method on a class, or use any of the attr_
methods, such as attr_accessor
, attr_reader
, and attr_writer
, we are declaring public methods.
Consider the following code for the User
class:
class User   ...