Herança é basicamente o reuso de códigos (uma das grandes vantagens da programação orientada a objetos). Essa característica otimiza a produção da aplicação em tempo e linhas de código.
Numa família por exemplo, a criança está herdando características de seus pais. Os pais, por sua vez, herdam algo dos avós, o que faz com que a criança também o faça, e assim sucessivamente. Na orientação a objetos, a questão é exatamente assim, O objeto abaixo na hierarquia irá herdar características de todos os objetos acima dele, seus “ancestrais”. A herança a partir das características do objeto mais acima é considerada herança direta, enquanto as demais são consideradas heranças indiretas. Por exemplo, na família, a criança herda diretamente do pai e indiretamente do avô e do bisavô. A questão da herança varia bastante de linguagem para linguagem. Em algumas delas, há a questão da herança múltipla. Isso, essencialmente, significa que o objeto pode herdar características de vários “ancestrais” ao mesmo tempo diretamente.