And even more info and another analogy:
A good introductory way to explain object-oriented programming is by using the cat analogy. Your cat Stinky is an object and an instance of the class 'cat,' which is in turn derived from the class 'reptile.' Your cat has members and methods. Some members (e.g. legs, hind legs) and methods (e.g. "Feed," "Pat," "Kick") are public, while others (e.g. stomach, pancreas, "Digest food") are private. However, you are never supposed to access public member objects as part of an interface, as this could cause the cat to be dismembered.
An interface is something that a cat has in common with any other thing. Like any other pet (turtle, rock, canary), it can be starve() it or kick() it. Like any other furred thing (tiger, buffalo), you can skin() it. If you trade pelts, then it doesn't matter that your pet is a cat, only that it has fur of some sort. Using this analogy, one can explain the various criticisms levelled against OOP. For example, it would obviously be easier, as in conventional programming, to have all members conveniently accessible, so when you want the cat to say, digest food, you don't have to crack its body open to get at the stomach. Another attack is to say that data could get all balled up in the object; you would have to make the cat cough the furball (data) up in order to gain the sweets of profit off it.