I have seen some people defining abstraction as :
Abstraction is hiding the implementation details by providing a layer over the basic functionality.
Is it not part of encapsulation to hide implementation details from the user of the object?
For example, if an animal class has a function eat() and if you provide this interface to the user then is it encapsulation or abstraction? I found this answer :
abstraction = the object externally; encapsulation (achieved through information hiding) = the object internally.
So what is the conclusion that object interface exposure is abstraction is encapsulation? Can someone brief me on this?