Product Design, Manufacturing & Innovation Resources
Lar » Herança (programação orientada a objetos)

Herança (programação orientada a objetos)

1967
  • Kristen Nygaard
  • Ole-Johan Dahl
Programmer coding inheritance in object-oriented programming at a modern office.

(Imagem gerada apenas para fins ilustrativos)

Inheritance is a mechanism in Programação Orientada a Objetos where a new class (subclass or derived class) is based on an existing class (superclass or base class), inheriting its attributes and methods. This supports code reusability and establishes a natural hierarchy between classes. The subclass can extend or override the inherited behavior, allowing for more specific implementations while maintaining a common interface.

Inheritance facilitates an “is-a” relationship between classes. For example, a ‘Dog’ is a type of ‘Animal’. In this scenario, ‘Animal’ would be the superclass, containing general attributes and methods like ‘age’ and ‘eat()’. The ‘Dog’ class would be the subclass, inheriting these properties and adding its own specific ones, like ‘breed’ and ‘bark()’. This avoids code duplication, as the common logic is defined once in the superclass and reused by all its subclasses. Changes made to the superclass are automatically propagated to all subclasses, simplifying maintenance.

There are different types of inheritance, including single inheritance (a class inherits from only one superclass), multiple inheritance (a class inherits from more than one superclass), and multilevel inheritance (a class inherits from another class which itself is a subclass). While powerful, inheritance can also introduce complexity and tight coupling between superclasses and subclasses. Overuse can lead to deep and convoluted hierarchies that are difficult to understand and maintain. Modern design often favors composition over inheritance, where an object contains an instance of another object to achieve code reuse, representing a “has-a” relationship.

UNESCO Nomenclature: 1203
Ciência da Computação

Tipo

Sistema abstrato

Interrupção

Substancial

Uso

Uso generalizado

Precursores

  • the concept of hierarchical classification in biology and philosophy
  • data structures that could contain other data structures
  • the need for code reuse in large software systems
  • the design of the simula language, which introduced classes and inheritance

Aplicações

  • gui widget toolkits (e.g., a ‘button’ class inheriting from a ‘control’ class)
  • frameworks for web development (e.g., controller classes inheriting from a base controller)
  • game development (e.g., ‘orc’ and ‘elf’ classes inheriting from a ‘character’ class)
  • modeling biological classifications
  • creating specialized exception types in programming languages

Patentes:

NA

Ideias de Inovação Potencial

Devido ao tráfego de bots de coleta de dados, atualmente superior a 40 mil por dia, este conteúdo é reservado aos membros da comunidade.
> Login < ou > Registrar < (100% gratuito) para acessar isso, assim como todo o restante do conteúdo e das ferramentas restritas.

Related to: inheritance, subclass, superclass, derived class, base class, code reuse, hierarchy, is-a relationship, polymorphism, overriding.

Contexto histórico

Herança (programação orientada a objetos)

1953
1960
1960
1967
1970
1970
1970
1952
1956
1960
1967
1967
1970
1970
1970

(Caso a data seja desconhecida ou irrelevante, por exemplo, "mecânica dos fluidos", é fornecida uma estimativa aproximada de seu surgimento notável)

Imagens em tamanho real e downloads estão disponíveis apenas, 100% gratuitos, para membros registrados.