A class should have one, and only one, reason to change.
This Single Responsibility Principle means that “a class must have only one reason to change”, so, a class must have a single responsibility. Basically, this principle, specifically is about cohesion. In computer programming, cohesion refers to the degree to which the elements inside a module belong together. In other words, the more clearly defined your class is, the more cohesive it is.
The class having a sole responsibility means that it is in charge of doing just one concrete thing. As a consequence of that, the class must have only one reason to change.
We want to avoid having objects with multiple responsibilities (because they know more than they should, these objects are often called god-objects). The objects than group different, mostly unrelated behaviors, are harder to maintain.
The class will have to be updated if and only if one single thing on the domain problem changes. If a class has to be modified for different reasons, then the class has too many responsibilities, and the abstraction is incorrect.
Another way of looking at this principle is if, when looking at a class, there are methods that do not relate to each other and are mutually exclusive, then these are the different responsibilities that have to be broken down into smaller classes.