Lições do módulo (1/2)
Herança em C++
Herança é um dos principais pilares da Programação Orientada a Objetos (OOP). Ele permite que uma nova classe (chamada de derivada ou classe filha) herde membros (atributos e métodos) de uma classe existente (chamada de base ou classe pai), promovendo a reutilização do código.
Sintaxe Básica
No C++, a herança é especificada usando o operador : após o nome da classe derivada, seguido por um especificador de acesso (geralmente public) e o nome da classe base.
class Shape {
public:
void setColor(std::string c) {
color = c;
}
protected:
std::string color; // Accessible by derived classes
};
// Rectangle inherits publicly from Shape
class Rectangle : public Shape {
public:
double getArea() {
return width * height;
}
private:
double width {0.0};
double height {0.0};
};Especificador de acesso: protected
Juntamente com public e private, a herança apresenta o especificador protected:
privatemembros da classe base * _ não _ * estão diretamente acessíveis a partir da classe derivada.protectedmembros da classe base são inacessíveis do lado de fora, mas são diretamente acessíveis dentro de classes derivadas.
Inicialização da Classe Base
Os construtores não são herdados automaticamente. Ao instanciar uma classe derivada, o construtor de classe base é chamado primeiro. Se a classe base exigir argumentos, devemos invocá-la explicitamente na ** lista de inicializadores de membros ** do construtor derivado.
class Parent {
public:
Parent(int x) {
std::cout << "Parent: " << x << std::endl;
}
};
class Child : public Parent {
public:
// Explicit call to Parent constructor
Child(int x, int y) : Parent(x) {
std::cout << "Child: " << y << std::endl;
}
};direito, aplica-se:
Experimente também.
Crie uma classe Dog que herda publicamente da classe Animal. A classe Dog deve incluir um método public play() que imprime 'Playing' usando std::cout.
Mostrar dica
Use a sintaxe `:` seguida por `public Animal` para estender a classe base e, em seguida, escreva o método `play()`.
Solução disponível após 3 tentativas
Complete a classe Carro herdando do Veículo. Escreva um construtor para o Carro que aceite std::string b e o passe para o construtor do Veículo através da lista de inicializadores de membros.
Mostrar dica
No construtor `Car`, use a sintaxe `: Vehicle(b)` imediatamente após os parênteses do parâmetro para delegar a inicialização da marca à classe base.
Solução disponível após 3 tentativas