Nera Postado Setembro 14, 2020 Denunciar Share Postado Setembro 14, 2020 (editado) 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. Editado Setembro 14, 2020 por Nera Citar Link para o comentário Compartilhar em outros sites More sharing options...
1 vangodp Postado Setembro 20, 2020 Denunciar Share Postado Setembro 20, 2020 (editado) 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 Editado Setembro 20, 2020 por vangodp Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Nera
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 para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.