There are two important parts to abstraction
Generalization: The process of extracting only the shared properties and behaviors that serve the general use case.
Specialization: The process of providing the implementation details required to serve the special case.