abstraction and encapsulation difference