Ir para conteúdo
Fórum Script Brasil
  • 0

Tenho dúvida em um parâmetro de herança em C++


Nera

Pergunta

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 por Nera
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 1

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 por vangodp
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...