Tag: superclasse
estudar1920 – as heranças múltipla e a superclasse, em c++
Uma classe pode herdar múltiplos membros de várias classes e uma classe derivada por também ser uma superclasse, havendo uma árvore de derivação
exemplo de superclasse (veiculo<-autocarro<-minicoisa):
#include <iostream>
using namespace std;
class Veiculo
{
private:
int passageiros;
public:
Veiculo();
~Veiculo();
void setPassageiros(int p);
int getPassageiros();
void imprime();
};
Veiculo::Veiculo()
{
cout << "\nconstrutor de veiculo " << getPassageiros() << endl;
}
Veiculo::~Veiculo()
{
cout << "\ndestrutor de veiculo " << getPassageiros() << endl;
passageiros = NULL;
}
void Veiculo::setPassageiros(int p)
{
passageiros = p;
}
int Veiculo::getPassageiros()
{
return passageiros;
}
void Veiculo::imprime()
{
cout << "\nsou o veiculo " << getPassageiros() << endl;
}
class Autocarro : public Veiculo
{
private:
int portas;
public:
Autocarro();
~Autocarro();
void setPortas(int p);
int getPortas();
void imprime();
};
Autocarro::Autocarro()
{
cout << "\nconstrutor de autocarro " << getPortas() << endl;
}
Autocarro::~Autocarro()
{
cout << "\ndestrutor de autocarro " << getPortas() << endl;
portas = NULL;
}
void Autocarro::setPortas(int p)
{
portas = p;
}
int Autocarro::getPortas()
{
return portas;
}
void Autocarro::imprime()
{
cout << "\sou o autocarro " << getPortas() << endl;
}
class MiniCoisa: public Autocarro
{
private:
int rodinhas;
public:
MiniCoisa();
~MiniCoisa();
void setRodinhas(int r);
int getRodinhas();
void imprimir();
};
MiniCoisa::MiniCoisa()
{
cout << "\nconstrutor de minicoisa " << getRodinhas() << endl;
}
MiniCoisa::~MiniCoisa()
{
cout << "\ndestrutor de rodinhas " << getRodinhas() << endl;
rodinhas = NULL;
}
void MiniCoisa::setRodinhas(int r)
{
rodinhas = r;
}
int MiniCoisa::getRodinhas()
{
return rodinhas;
}
void MiniCoisa::imprimir()
{
cout << "\nsou o rodinhas " << getRodinhas() << endl;
}
int main()
{
Veiculo vei1;
vei1.imprime();
Autocarro auto1;
auto1.setPortas(3);
auto1.imprime();
MiniCoisa min1;
min1.setRodinhas(5);
min1.imprimir();
return 0;
}
exemplo de herdar de multiplas classes (minicoisa de veiculo E minicoisa de autocarro):
#include <iostream>
using namespace std;
class Veiculo
{
private:
int passageiros;
public:
Veiculo();
~Veiculo();
void setPassageiros(int p);
int getPassageiros();
void imprime();
};
Veiculo::Veiculo()
{
cout << "\nconstrutor de veiculo " << getPassageiros() << endl;
}
Veiculo::~Veiculo()
{
cout << "\ndestrutor de veiculo " << getPassageiros() << endl;
passageiros = NULL;
}
void Veiculo::setPassageiros(int p)
{
passageiros = p;
}
int Veiculo::getPassageiros()
{
return passageiros;
}
void Veiculo::imprime()
{
cout << "\nsou o veiculo " << getPassageiros() << endl;
}
class Autocarro
{
private:
int portas;
public:
Autocarro();
~Autocarro();
void setPortas(int p);
int getPortas();
void imprime();
};
Autocarro::Autocarro()
{
cout << "\nconstrutor de autocarro " << getPortas() << endl;
}
Autocarro::~Autocarro()
{
cout << "\ndestrutor de autocarro " << getPortas() << endl;
portas = NULL;
}
void Autocarro::setPortas(int p)
{
portas = p;
}
int Autocarro::getPortas()
{
return portas;
}
void Autocarro::imprime()
{
cout << "\sou o autocarro " << getPortas() << endl;
}
class MiniCoisa : public Autocarro, public Veiculo
{
private:
int rodinhas;
public:
MiniCoisa();
~MiniCoisa();
void setRodinhas(int r);
int getRodinhas();
void imprimir();
};
MiniCoisa::MiniCoisa()
{
cout << "\nconstrutor de minicoisa " << getRodinhas() << endl;
}
MiniCoisa::~MiniCoisa()
{
cout << "\ndestrutor de rodinhas " << getRodinhas() << endl;
rodinhas = NULL;
}
void MiniCoisa::setRodinhas(int r)
{
rodinhas = r;
}
int MiniCoisa::getRodinhas()
{
return rodinhas;
}
void MiniCoisa::imprimir()
{
cout << "\nsou o rodinhas " << getRodinhas() << endl;
}
int main()
{
MiniCoisa min1;
min1.setRodinhas(10);
min1.setPassageiros(4);
min1.setPortas(2);
min1.imprimir();
return 0;
}
Tags : herança multipla, Learn C plus plus, superclasse