Friday, 9 January 2009

Abstract vs Abstraction

One of my favorite interview questions is to ask about the object orientation terms inheritance, polymorphism, encapsulation and abstraction. Most people have no problem with inheritance. Polymorphism usually makes people think, but they usually get to overriding which is good enough as I'm not currently interviewing C++ programmers. Most people equate encapsulation to data hiding and then I ask them to explain abstraction and the difference between it and encapsulation.

Almost without fail I get a description of the abstract keyword from Java or C#. So I explain that that abstract is a language feature and abstraction is about designing interfaces. This usually goes down well and we move on. I just find it absolutely astounding that almost every programmer I interview gets confused here.


  1. Any interviewee who is smart enough to look for the blogs of those that are going to interview them are entitled to read up on this, get the question absolutely correct only as long as they smirk while answering.

    Smirking should be considered compulsory.