Conteúdo do Curso
C++ Poo
C++ Poo
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
class 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
#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
class 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
#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
Flying
eBird
, representando ambas as habilidades. A classeFlying
també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!