Sobrescrever metodo

9 respostas
zeimbic

iai pessoal
estou com um problema eu esou quendo sobrescever um metodo
como eu faço.. no caso eu tenho q fazer um metodo e em outra classe usar o mesmo metodo porem
acrescentando mais algumas funções.

eu fiz este metodo

-------- metodo para atualizar as contas ------
    
public void CobrarTaxa(double cobrarTaxa) 
{
       double tx = saldo - cobrarTaxa;
       saldo = saldo - tx; }

e na outra classe eu quero utilizar este metodo seria quando eu fazer uma movimentação bancaria do meu sistema
ela atualize descontando as taxa estipuladas.

9 Respostas

marcelo.bellissimo
zeimbic:
iai pessoal estou com um problema eu esou quendo sobrescever um metodo como eu faço.. no caso eu tenho q fazer um metodo e em outra classe usar o mesmo metodo porem acrescentando mais algumas funções.

eu fiz este metodo

-------- metodo para atualizar as contas ------
    
public void CobrarTaxa(double cobrarTaxa) 
{
       double tx = saldo - cobrarTaxa;
       saldo = saldo - tx; }

e na outra classe eu quero utilizar este metodo seria quando eu fazer uma movimentação bancaria do meu sistema
ela atualize descontando as taxa estipuladas.

Voce deve extender essa classe onde está o método "original", e na sua outra classe (filha) voce faz um método identico, com o mesmo nome e parametros, isso por sí só já constitui uma sobreescrita de método.

Exemplo:
class Pai {
    public void metodoTeste(int i){
        //faz algo
    }
}

class Filha extends Pai {
    // isso é um override/sobreescrita
    public void metodoTeste(int i){
        //faz algo + algo
    }
}

Se o método "metodoTeste()" não fosse sobreescrito na classe Filha, ao chamar esse metodo, seria chamado o metodo que foi declarado na classe Pai...

luiz.portnoy

Bom, não tem problema nenhum… É só você escrever esse mesmo método igualzinho e apensa mudar a lista de parametros.

Ex.:

public void CobrarTaxa(double cobrarTaxa)   
{   
       double tx = saldo - cobrarTaxa;   
       saldo = saldo - tx; 
}

public void CobrarTaxa(double cobrarTaxa, double cobrarOutraTaxa)   
{   
       double tx = saldo - cobrarTaxa - cobrarOutraTaxa;   
       saldo = saldo - tx; 
}

Apenas basta decidir quem deve ser chamado na hora que você precisar do método e passar as quantidades de parâmetros certas.

Espero ter ajudado

marcelo.bellissimo

luiz.portnoy:
Bom, não tem problema nenhum… É só você escrever esse mesmo método igualzinho e apensa mudar a lista de parametros.

Ex.:

public void CobrarTaxa(double cobrarTaxa)   
{   
       double tx = saldo - cobrarTaxa;   
       saldo = saldo - tx; 
}

public void CobrarTaxa(double cobrarTaxa, double cobrarOutraTaxa)   
{   
       double tx = saldo - cobrarTaxa - cobrarOutraTaxa;   
       saldo = saldo - tx; 
}

Apenas basta decidir quem deve ser chamado na hora que você precisar do método e passar as quantidades de parâmetros certas.

Espero ter ajudado

Apenas para conhecimento, o que você exemplificou acima se chama “sobrecarga” ou “overload” de métodos… no caso dele, ele quer uma sobreescrita, que envolve duas classes, uma delas sendo “extendida” pela outra, e replicando seus métodos… bem, agora você já sabe como fazer os dois, sobreescrita e sobrecarga… :wink:

luiz.portnoy

Opa, voce tem razão, desculpa… :oops:

É que pelo exemplo que ele deu eu entendi que ele queria mesmo fazer um overload… Mas você tem razão.

Realmente para um override precisa ter uma classe superior…

marcelo.bellissimo

Hehehe, relaxa… detalhes… pelo menos agora ele já sabe como fazer os dois, se precisar… e talvez precise…

aajjbb

Agora me pegaram, fiquei em duvida, da diferença de reescrita e “overload” . ainda so faço reescrita, mas overload ainda nao havia ouvido falar.

luiz.portnoy

Overload ou sobrecarga é quando voce tem 2 ou mais métodos com o mesmo nome, mas o que difere é a quantidade de parâmetros dele.

Ex.:

public void fazAlgo(int x){}

public void fazAlgo(int x, int y){}

public void fazAlgo(int x, int y, int z){}

Temos 3 métodos fazAlgo, mas eles tem quantidades diferentes de parâmetros.

marcelo.bellissimo
aajjbb:
Agora me pegaram, fiquei em duvida, da diferença de reescrita e "overload" . ainda so faço reescrita, mas overload ainda nao havia ouvido falar.
Sobreescrita é quando você "replica" um método de uma classe pai, usando o mesmo nome e a mesma quantidade e tipos de argumentos...

Sobrecarga, é quando você cria vários métodos, apenas alternando na quantidade e tipo de parâmetros, mas mantendo o nome do método... a sobrecarga de métodos independe da herança, já a sobreescrita só acontece quando herdamos/extendemos uma classe...

Herança, com sobreescrita do metodo "metodoTeste" :
class Pai {  
     public void metodoTeste(int i){  
         //faz algo  
     }  
 }  
   
 class Filha extends Pai {  
     // isso é um override/sobreescrita  
     public void metodoTeste(int i){  
         //faz algo + algo  
     }  
 }
Sobrecarga de métodos:
class Pai {  
     public void metodoTeste(int i){  
         //faz algo  
     }

     public void metodoTeste(int i, int j){  
         //faz algo  
     }

     public void metodoTeste(int i, int j, int k){  
         //faz algo  
     } 
 }
aajjbb

Obrigado, otima ajuda :smiley:

Criado 17 de maio de 2010
Ultima resposta 17 de mai. de 2010
Respostas 9
Participantes 4