often used interchangeably but actually refer to two separate, and largely orthogonal, qualities

Encapsulation

behavior of an object can only be affected through its API
  • reduces dependencies

Information hiding

Conceals how an object implements its functionality
  • work at higher level abstraction

Aliasing

break encapsulation by sharing references to mutable objects
  • increases dependencies
accidental aliasing can couple unrelated parts of a system

(src: Book: Growing Object Oriented Software, Guided By Tests - Steve Freeman & Nat Pryce)