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