In well designed code the syntax and semantics of the public interface of classes and packages is much smaller than their implementations.
So we especially strive
to make the public interface of each class small and simple. We do that by making each class and package focus on a single activity or a few
intimately related set of activities. We say that such classes and packages are cohesive.
Since most professional and some academic software implementations are too complex for one person to understand completely, it becomes
very important to hide as much as possible of the complexity of the implementation behind simple interfaces. But that only works if clients
of that software can use it reliably without knowledge of those details.
The C++ standard library is a good example of this. Most of the library can be used knowing only its interfaces.