La forma més fàcil per explicar quelcom nou, és començar amb quelcom conegut. Si vols descriure que es una "goleta", ajudaria si els qui t'escolten coneixen que és un "vaixell". Si vols explicar com treballa una arpa, és millor si pots asumir que la teva audiència sap que hi ha dins un piano, o ha vist tocar una guitarra, o com a mínim està familiaritzat amb la idea d'un "instrument musical".
El mateix passa si vols definir un nou tipus d'objecte; la descripció és més simple si pots començar amb un objecte que ja existeix.
Amb això en ment, els llenguatges de programació orientats a objectes et permeten que en la definició d'una classe nova et basis en una classe ja definida. La classe base s'anomena superclasse; la nova classe és la seva subclasse. La definició de la subclasse només especifica en que difereix de la superclasse; les altres coses s'agafen de la mateixa.
Res es copia de la superclasse a la subclasse. En lloca d'això, les dues classes estan connectades ja que la subclasse hereda tots els mètodes i les variables d'instància de la seva superclasse, molts com tu volen que els que us escolent entenguin de "goletes" per herencia ja que ells realment els coneixen com a vaixells. Si una definició de subclasse està buida (si no defineix cap variable d'instància o mètodes propis), les dues classes seran idèntiques (exepte pels noms) i compartiran la mateixa definició. Podria ser com explicar que un "violí" és el mateix que un "violí" (de l'anglés "fiddle" i "violin" dues paraules amb el mateix significat). A demés, la raó de declarar una subclasse no és per generar sinònims, sinó per crear quelcom com a mínim una mica diferent de la seva superclasse. Podries voler que el violí toqués "herva blava" (de l'anglés bluegrass) a demés de música classica.
Qualsevol classe pot utilitzar-se com una superclasse d'una nova definició de classe. Una classe pot ser simultàniament una subclasse d'una altra classe i una superclasse de les seves pròpies subclasses. Qualsevol nombre de classes es poden enllaçar en un jerarquia d'herència, com es mostra en la Figura 1-4.
Figure 1-4 Jerarquia d'Herència

Cada jerarquia d'herència comença amb una classe arrel que no té superclasse. A partir de la classe arrel, la jerarquia es bifurca cap aball. Cada classe hereda de la seva superclasse, i a través de la seva superclasse, de totes les classe per sobre seu en la jerarquia. Cada classe hereda de la classe arrel.
Cada classe és l'acumulació de totes les definicions de classe dins la seva cadena d'herència. En l'exemple de sobre, la classe D hereda d'ambdues, de C, la seva superclasse, i de la classe arrel. Els mèmbres de la classe D té els mètodes i les variables d'instància definits en totes les tres classe -- D, C, i l'arrel.
Normalment, cada classe té només una superclasse i pot tenir un nombre ilimitat de subclasse. Tanmateix, en alguns llenguatges de programació orientació a objectes (no en Objective-C), una classe pot tenir més d'una superclasse; aquest pot heredar a través de múltiples codis. En lloc d'una jerarqua que es bifurca cap avall que mostra la Figura 1-4, la herència múltiple permet que algunes bifurcacions de la jerarquia (o de diferents jerarquies) s'uneixin.
Una subclasse pot definir la seva definició d'herència de la seva superclasse en tres situacions diferents:
Aquestes subclasses tendeixen a completar la definició de la superclasse, fent-la més específica i especialitzada. Afegeix, amb algunes modificacions, codi en vès de treure'l. Fixeu-vos que els mètodes normalment no poden ser desheredats i les variables d'instància no poden ser eliminats o sobreescrites.
En els exemples clàssics d'una jerarquia d'herència s'agafen les categories d'animals i la de plantes. Per exemple, hi hauria una classe corresponent a una familia d'abres de Pinacees (pi). Les seves subclasses haurien de ser Abet, Pi, Picea, Cicuta, etc, corresponent als varis gèneres que formen la família. La classe Pi ha de tenir una subclasse PiTou i una PiDur, amb PiBlanc, PiDolç com a subclasses de SoftPi, i PiPonderosa, PiJack, PiMonterrey, PiVermell com a sublasses de PiDur.
Poc sovint aquesta és una raó per programar un categoria com aquesta, però l'analogia és bona. Les subclasses tendeixen a especialitzar una superclasse o adaptar-la per un propòsit especial, moltes, com les especies especialitzant un gènere.
Hi han alguns úsos típics de l'herència:
Per exemple, els objectes Aixeta, Vàlvula, i Canonada, definits pel programa de modes d'ús de l'aigua, totes necessiten una connecció a un orígen d'aigua i han de ser capaços de saber l'aigua que flueix. Aquestes coses comunes poden codificar-se només un cop, en una classe que les classes Aixeta, Vàlvula i Canonada hi heredaran. Una Aixeta pot dir-se o ser un tipus de Vàlvula, potser la classe Aixeta podria heredar de Vàlvula, i hi afegeix una mica de si mateix.
Quan diferents classes implementen mètodes amb noms similars en un programa és millor fer ús del polimorfisme en el seu disseny. Activar un protocol que les subclasses han d'implementar ajuda a reforçar aquestes convencions.
L'herència és una forma per fer quelcom o és per programar una tasca de forma més fàcil i una forma per separar els nivells d'implementació.