Herança Múltipla
A herança múltipla permite que uma classe derivada herde de várias classes base. Isso significa que uma única classe derivada pode ter acesso aos membros (dados e funções) de várias classes base, combinando efetivamente seus atributos e comportamentos.
Herança Múltipla Horizontal
Nesse tipo de herança múltipla, uma classe herda propriedades e métodos de várias superclasses no mesmo nível da hierarquia de herança. Considere classes: Shape e Color, cada uma com propriedades e métodos distintos. A Shape define a forma de um objeto, e a Color define sua cor.
Shape.h
Color.h
1234567class Shape { public: void setShape(const std::string& value) { shape = value; } std::string getShape() { return shape; } private: std::string shape; };
Agora, vamos criar uma subclasse chamada ColoredShape que herda propriedades e métodos de ambas as classes Shape e Color.
ColoredShape.h
123456789#include "Shape.h" #include "Color.h" class ColoredShape : public Shape, public Color { public: void describe() { std::cout << "This object is a " << getShape() << " shape and is " << getColor() << '\n'; } };
Herança Vertical
Na herança em profundidade, uma class herda propriedades e métodos de seu pai direto e de seus ancestrais, formando uma cadeia de herança. Por exemplo, considere a class Vehicle, que pode servir como base para herança de Car, Truck e outros. Em nosso exemplo, utilizaremos o Car para ilustrar o conceito.
Vehicle.h
Car.h
12345class Vehicle { public: void start() { std::cout << "Vehicle started"; } void stop() { std::cout << "Vehicle stopped"; } };
Para alcançar a herança vertical, é necessário configurar uma hierarquia onde uma class herda de outra, e então uma classe subsequente herda da primeira, e assim por diante. Podemos criar um ElectricCar que herda todas as propriedades e funcionalidades de Car, que por sua vez herda de Vehicle, estabelecendo uma estrutura de herança múltipla complexa.
ElectricCar.h
123456#include "Car.h" class ElectricCar : public Car { public: void charge() { std::cout << "Electric car is charging"; } };
Por que a Herança Múltipla é Necessária
A herança múltipla oferece flexibilidade e reutilização de código em situações nas quais uma class precisa apresentar comportamentos ou características de mais de uma class pai. Veja alguns cenários em que a herança múltipla é benéfica:
-
Papéis do mundo real: um pássaro voador pode combinar características das classes
FlyingeBird, representando ambas as habilidades. A classeFlyingtambém pode ser aplicada a aviões ou outros objetos voadores. -
Reutilização de código: a herança múltipla permite que uma classe reutilize funcionalidades de diferentes classes base sem duplicação.
-
Interfaces focadas: incentiva a combinação de interfaces pequenas e específicas em vez de utilizar uma única interface grande e genérica.
Divida um objeto complexo em objetos mais simples e utilize herança múltipla para criar software flexível e de fácil manutenção.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Pergunte-me perguntas sobre este assunto
Resumir este capítulo
Mostrar exemplos do mundo real
Awesome!
Completion rate improved to 3.13
Herança Múltipla
Deslize para mostrar o menu
A herança múltipla permite que uma classe derivada herde de várias classes base. Isso significa que uma única classe derivada pode ter acesso aos membros (dados e funções) de várias classes base, combinando efetivamente seus atributos e comportamentos.
Herança Múltipla Horizontal
Nesse tipo de herança múltipla, uma classe herda propriedades e métodos de várias superclasses no mesmo nível da hierarquia de herança. Considere classes: Shape e Color, cada uma com propriedades e métodos distintos. A Shape define a forma de um objeto, e a Color define sua cor.
Shape.h
Color.h
1234567class Shape { public: void setShape(const std::string& value) { shape = value; } std::string getShape() { return shape; } private: std::string shape; };
Agora, vamos criar uma subclasse chamada ColoredShape que herda propriedades e métodos de ambas as classes Shape e Color.
ColoredShape.h
123456789#include "Shape.h" #include "Color.h" class ColoredShape : public Shape, public Color { public: void describe() { std::cout << "This object is a " << getShape() << " shape and is " << getColor() << '\n'; } };
Herança Vertical
Na herança em profundidade, uma class herda propriedades e métodos de seu pai direto e de seus ancestrais, formando uma cadeia de herança. Por exemplo, considere a class Vehicle, que pode servir como base para herança de Car, Truck e outros. Em nosso exemplo, utilizaremos o Car para ilustrar o conceito.
Vehicle.h
Car.h
12345class Vehicle { public: void start() { std::cout << "Vehicle started"; } void stop() { std::cout << "Vehicle stopped"; } };
Para alcançar a herança vertical, é necessário configurar uma hierarquia onde uma class herda de outra, e então uma classe subsequente herda da primeira, e assim por diante. Podemos criar um ElectricCar que herda todas as propriedades e funcionalidades de Car, que por sua vez herda de Vehicle, estabelecendo uma estrutura de herança múltipla complexa.
ElectricCar.h
123456#include "Car.h" class ElectricCar : public Car { public: void charge() { std::cout << "Electric car is charging"; } };
Por que a Herança Múltipla é Necessária
A herança múltipla oferece flexibilidade e reutilização de código em situações nas quais uma class precisa apresentar comportamentos ou características de mais de uma class pai. Veja alguns cenários em que a herança múltipla é benéfica:
-
Papéis do mundo real: um pássaro voador pode combinar características das classes
FlyingeBird, representando ambas as habilidades. A classeFlyingtambém pode ser aplicada a aviões ou outros objetos voadores. -
Reutilização de código: a herança múltipla permite que uma classe reutilize funcionalidades de diferentes classes base sem duplicação.
-
Interfaces focadas: incentiva a combinação de interfaces pequenas e específicas em vez de utilizar uma única interface grande e genérica.
Divida um objeto complexo em objetos mais simples e utilize herança múltipla para criar software flexível e de fácil manutenção.
Obrigado pelo seu feedback!