Java programlamada dilinde erişim belirteçleri olan default, public, protected ve private aralarındaki farklar nelerdir?

Sınıf (class), Interface ve kalıtım (inheritance) uygulanırken nasıldır?