Nera 0 Posted September 14, 2020 Report Share Posted September 14, 2020 (edited) Boa Tarde Pessoal. Suponha que eu tenha a classe Veiculo e queira fazer uma classe Moto herdando os atributos de Veículo. Ficaria Assim: //------------------------------------------------------------------ class Moto : public Veículo{ }; //------------------------------------------------------------------ O que é esse public destacado (antes da palavra Veículo)? O que aconteceria se eu colocasse private? Quais são as outras opções que posso colocar no lugar de public? Obrigado. Nera. Edited September 14, 2020 by Nera Quote Link to post Share on other sites
1 vangodp 0 Posted September 20, 2020 Report Share Posted September 20, 2020 (edited) O public quer dizer que seus métodos públicos continuarão sendo públicos dentro de moto e que você também pode fazer uso deles quando declarar o objeto moto. Se trocar para private os métodos públicos da classe veiculo passam a ser privados, e neste caso o que quer dizer é que você só pode chamar eles de dentro da classe moto, não poderá chamar eles desde o objeto moto. Isso obrigará a você redefinir essas interfaces(funções) da classe veiculo dentro de moto. A utilidade disso é... digamos que, si você quer usar as funções de veiculo, porem achar que elas não devem ser usadas fora da classe, essa é a via de digamos bloquear o acesso a elas desde o objeto. você poderá usar elas na classe que herda, mas n fora. #include<iostream> using namespace std; class Veiculo{ int nRodas; public: int getrodas(){return nRodas;} void setrodas(int nRodas){ this->nRodas=nRodas; } }; class Moto : private Veiculo{ public: void estabelecerNumRodas(int numRodas){ setrodas(2); } int obterNumRodas(){ return getrodas(); } }; int main(){ Moto moto; moto.estabelecerNumRodas(2); cout<< moto.obterNumRodas() << endl; return 0; } Resumindo com private você n pode chamar a moto.setrodas ou moto.getrodas já que são privados dentro de moto, você teria de definir outras funções para isso, mas dentro de moto n teria problemas. Quando você herda public é como se fosse class Veiculo{ int nRodas; public: int getrodas(){return nRodas;} void setrodas(int nRodas){ this->nRodas=nRodas; } }; class Moto : public Veiculo{ int nRodas; public: int getrodas(){return nRodas;} void setrodas(int nRodas){ this->nRodas=nRodas; } }; E quando você herda como private class Veiculo{ int nRodas; public: int getrodas(){return nRodas;} void setrodas(int nRodas){ this->nRodas=nRodas; } }; class Moto : private Veiculo{ int nRodas; int getrodas(){return nRodas;} void setrodas(int nRodas){ this->nRodas=nRodas; } }; Os métodos getrodas e setrodas são acessíveis desde a parte publica de moto porem n desde o objeto moto Edited September 20, 2020 by vangodp Quote Link to post Share on other sites
Question
Nera 0
Boa Tarde Pessoal.
Suponha que eu tenha a classe Veiculo e queira fazer uma classe Moto herdando os atributos de Veículo.
Ficaria Assim:
//------------------------------------------------------------------
class Moto : public Veículo{
};
//------------------------------------------------------------------
O que é esse public destacado (antes da palavra Veículo)?
O que aconteceria se eu colocasse private?
Quais são as outras opções que posso colocar no lugar de public?
Obrigado.
Nera.
Link to post
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.