Olaya genel yaklaşırsan soyutlama, kodun daha basitleşmesi ve gereksiz kullanımının engellenmesi için oluşturulur. Bir abstract yapı vardır onu extend edip kullanırsın gibi gibi örnekleri vermeyeceğim.
Encapsulation ise yani kapsülleme, nesnenin içeriğini nesneden saklama. Örnek verecek olursam ben tc kimlik numarasını tutan bir yapı oluşturdum, buna setter yazmam gereksiz olur değil mi? Gereksiz kullanımlardan kaçınmak gibi düşünebilirsin. Kullanıcının detayları bilmesine gerek olmamalı ve kodun mantığına uygun olmayan müdahaleler yapılamamalı.