Abstraction is to hide/reduce implementation detail. The use of an interface is an example.
You know how to use it but you don't know the implementation details. Another example is
the iterator
pattern. With that pattern you can hide the data-structure without compromising
it's accessibility.
Encapsulation is the process in which internal variables are hidden and made accessible by
certain methods.