I'm replying to a ten year old post incase anyone stumbles upon this because it took me quite a while to find the answer after seeing over and over again the line that abstraction is to create more secure code with no reasoning provided.
excuse the quickly done and incomplete code but
Lets says you are on a banking website and this is the code for checking your balance
Using a reflection API you are able to modify and see all the details about a class in which an object belongs to at runtime.
Inside main we made a customer object since we used private in our parent class we cant access or modify balance or see balance implementation because Customer class doesnt have access to it. You might think why is abstraction important? why can't we just use inheritance since CustomerFinances didnt have any abstract methods. It is because if it werent abstract in main we'd be able to create CustomerFinances customer = new Customer(); and that would make the code vulnerable to the reflection API.