I was recently told that I should use abstraction more in my code. I am fairly unfamiliar with the matter, and in research I have found a lot about abstract classes but I am referring more to the "information hiding" portion, not the function in the code itself.
For example, if I have one class which performs a unique purpose, why would I want to create an abstract version for that class to implement? I am having trouble figuring out when to use abstraction and for what purpose, how does having essentially the same class without method bodies change how it is used? Is it mostly for when other people work with the code, and if that is true, should it still be done in more private projects just as good practice?