Sobrescrever metodo

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

[code]-------- metodo para atualizar as contas ------

public void CobrarTaxa(double cobrarTaxa)
{
double tx = saldo - cobrarTaxa;
saldo = saldo - tx; } [/code]

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.

[quote=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

[code]-------- metodo para atualizar as contas ------

public void CobrarTaxa(double cobrarTaxa)
{
double tx = saldo - cobrarTaxa;
saldo = saldo - tx; } [/code]

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.[/quote]

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:

[code]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
}
}[/code]

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…

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

[quote=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[/quote]

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:

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…

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

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.

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.

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” :

[code] 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
}
} [/code]
Sobrecarga de métodos:

[code]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  
 } 

}[/code]

Obrigado, otima ajuda :smiley: