Jump to content
Fórum Script Brasil
  • 0

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


Question

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 by Nera
Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 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

 

 

 

 

Edited by vangodp
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148894
    • Total Posts
      644966
×
×
  • Create New...