polymorphism:
Polymorphism in Objective-C is a fairly standard subtype polytype, which you will find in most class-oriented object-oriented languages. This means that an instance of a class can also be considered an instance of any of its superclasses.
In more specific terms, this means that your custom subclass of UITableViewCell, which we will call MyCustomTableViewCell, can be used wherever a UITableViewCell is expected. If the method has a UITableViewCell parameter, you can pass an instance of your MyCustomTableViewCell.
The converse is not true; if the method expects an instance of MyCustomTableViewCell, passing a regular UITableViewCell is an error.
This works because subclasses inherit the interface of their superclass. MyCustomTableViewCell automatically uses all UITableViewCell methods (e.g. prepareForReuse). Method implementations can be overridden, but you can still send them the same messages.
Keep in mind that accessing an instance of MyCustomTableViewCell as a UITableViewCell does not change its behavior. If you override prepareForReuse, you still get your overridden behavior.
Inheritance:
The concept of inheritance brings something real to programming. It allows you to define a class that has a specific set of characteristics (such as methods and instance variables), and then other classes that must be created that are derived from this class. A derived class inherits all the functions of the parent class and usually adds some of its functions.
Deriving classes, we create what is often called a class hierarchy. The class at the top of the hierarchy is known as the base class or root class, and the derived classes are known as subclasses as well as child classes. Any number of subclasses can be obtained from the class. The class from which the subclass is derived is called the parent class.
Classes must not only be derived from the root class. For example, a subclass can also inherit from another subclass with the ability to create large and complex class hierarchies. In Objective-C, a subclass can be obtained from only one direct parent class. This is a concept called single inheritance.
Tutorials:
http://www.tutorialspoint.com/objective_c/objective_c_inheritance.htm
http://www.tutorialspoint.com/objective_c/objective_c_polymorphism.htm
Literature:
http://www.quora.com/In-Objective-C-what-is-polymorphism
http://www.techotopia.com/index.php/Objective-C_Inheritance